diff --git a/src/plugins/coreplugin/coreimpl.cpp b/src/plugins/coreplugin/coreimpl.cpp
index 1cfe46f00fef54c985560b860818de9e44cd9b92..13e85f219e736ca5a5a8df7442a0fd6adb8c5ea9 100644
--- a/src/plugins/coreplugin/coreimpl.cpp
+++ b/src/plugins/coreplugin/coreimpl.cpp
@@ -31,6 +31,7 @@
 
 #include <QtCore/QDir>
 #include <QtCore/QCoreApplication>
+#include <QtCore/QSettings>
 
 namespace Core {
 namespace Internal {
@@ -135,9 +136,9 @@ MimeDatabase *CoreImpl::mimeDatabase() const
     return m_mainwindow->mimeDatabase();
 }
 
-QSettings *CoreImpl::settings() const
+QSettings *CoreImpl::settings(QSettings::Scope scope) const
 {
-    return m_mainwindow->settings();
+    return m_mainwindow->settings(scope);
 }
 
 SettingsDatabase *CoreImpl::settingsDatabase() const
diff --git a/src/plugins/coreplugin/coreimpl.h b/src/plugins/coreplugin/coreimpl.h
index d591f3efb6f05136e5ba6efd1ebc5ae6d89ad50d..bc7b87fb3c59dd0c3b41f8198769115bd287824e 100644
--- a/src/plugins/coreplugin/coreimpl.h
+++ b/src/plugins/coreplugin/coreimpl.h
@@ -68,7 +68,7 @@ public:
     ModeManager *modeManager() const;
     MimeDatabase *mimeDatabase() const;
 
-    QSettings *settings() const;
+    QSettings *settings(QSettings::Scope scope = QSettings::UserScope) const;
     SettingsDatabase *settingsDatabase() const;
     QPrinter *printer() const;
 
diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp
index 531319a5adc015ae27b60c9598d5d98c9e3b0698..3c0b860e5b489eb04663f6147b7102c55f0434fe 100644
--- a/src/plugins/coreplugin/icore.cpp
+++ b/src/plugins/coreplugin/icore.cpp
@@ -188,12 +188,20 @@
 */
 
 /*!
-    \fn QSettings *ICore::settings() const
+    \fn QSettings *ICore::settings(QSettings::UserScope scope) const
     \brief Returns the application's main settings object.
 
     You can use it to retrieve or set application wide settings
     (in contrast to session or project specific settings).
 
+    If \a scope is QSettings::UserScope (the default), the
+    users settings will be read from the users settings, with
+    a fallback to global settings provided with Qt Creator.
+
+    If \a scope is QSettings::SystemScope, only the system settings
+    shipped with the current version of Qt Creator will be read. This
+    functionality exists for internal purposes only.
+
     \see settingsDatabase()
 */
 
diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h
index eab9b9abf0f9a8b641ae9c32a7ccd342428d37b6..1f92f9ed1414017135ff5fd9ad11fc7a8456ddd8 100644
--- a/src/plugins/coreplugin/icore.h
+++ b/src/plugins/coreplugin/icore.h
@@ -32,6 +32,7 @@
 
 #include "core_global.h"
 #include <QtCore/QObject>
+#include <QtCore/QSettings>
 
 QT_BEGIN_NAMESPACE
 class QMainWindow;
@@ -40,6 +41,7 @@ class QSettings;
 template <class T> class QList;
 QT_END_NAMESPACE
 
+
 namespace Core {
 
 class ActionManager;
@@ -93,7 +95,7 @@ public:
     virtual ModeManager *modeManager() const = 0;
     virtual MimeDatabase *mimeDatabase() const = 0;
 
-    virtual QSettings *settings() const = 0;
+    virtual QSettings *settings(QSettings::Scope scope = QSettings::UserScope) const = 0;
     virtual SettingsDatabase *settingsDatabase() const = 0;
     virtual QPrinter *printer() const = 0;
 
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index 1d028b98e7d6abbc824282c8968e8df2d249d569..432d06fdc917c994bba1bbba30cac268595f5ccd 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -945,6 +945,14 @@ VCSManager *MainWindow::vcsManager() const
     return m_vcsManager;
 }
 
+QSettings *MainWindow::settings(QSettings::Scope scope) const
+{
+    if (scope == QSettings::UserScope)
+        return m_settings;
+    else
+        return m_globalSettings;
+}
+
 EditorManager *MainWindow::editorManager() const
 {
     return m_editorManager;
diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h
index decaabb32cb86d487e03c2d6911ca62574c9f43a..8fae630f43ebc4c9d7f56e45d2ff35407d9845df 100644
--- a/src/plugins/coreplugin/mainwindow.h
+++ b/src/plugins/coreplugin/mainwindow.h
@@ -36,6 +36,7 @@
 
 #include <QtCore/QMap>
 #include <QtGui/QColor>
+#include <QtCore/QSettings>
 
 QT_BEGIN_NAMESPACE
 class QSettings;
@@ -107,7 +108,7 @@ public:
     Core::MimeDatabase *mimeDatabase() const;
 
     VCSManager *vcsManager() const;
-    inline QSettings *settings() const { return m_settings; }
+    QSettings *settings(QSettings::Scope scope) const;
     inline SettingsDatabase *settingsDatabase() const { return m_settingsDatabase; }
     virtual QPrinter *printer() const;
     IContext * currentContextObject() const;
@@ -176,6 +177,7 @@ private:
     QList<int> m_globalContext;
     QList<int> m_additionalContexts;
     QSettings *m_settings;
+    QSettings *m_globalSettings;
     SettingsDatabase *m_settingsDatabase;
     mutable QPrinter *m_printer;
     ActionManagerPrivate *m_actionManager;