diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index 1f4089f3a13097433652d27096188b5eb4814628..8e86066c3dfc2e1f1055f427f3821ae9cf853bd6 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -1031,13 +1031,17 @@ IEditor *EditorManager::createEditor(const QString &editorId,
 
     EditorFactoryList factories;
     if (editorId.isEmpty()) {
+        const QFileInfo fileInfo(fileName);
         // Find by mime type
-        MimeType mimeType = m_d->m_core->mimeDatabase()->findByFile(QFileInfo(fileName));
+        MimeType mimeType = m_d->m_core->mimeDatabase()->findByFile(fileInfo);
         if (!mimeType) {
             qWarning("%s unable to determine mime type of %s/%s. Falling back to text/plain",
                      Q_FUNC_INFO, fileName.toUtf8().constData(), editorId.toUtf8().constData());
             mimeType = m_d->m_core->mimeDatabase()->findByType(QLatin1String("text/plain"));
         }
+        // open text files > 48 MB in binary editor
+        if (fileInfo.size() >  qint64(3) << 24 && mimeType.type().startsWith(QLatin1String("text")))
+            mimeType = m_d->m_core->mimeDatabase()->findByType(QLatin1String("application/octet-stream"));
         factories = editorFactories(mimeType, true);
     } else {
         // Find by editor id