diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp
index 184ed1421fd444684f4c1bd67e8c8f92ef8871ef..7a5ffa285cd2b07cf184913864cda6ef1ee7d0e5 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.cpp
+++ b/src/plugins/qbsprojectmanager/qbsproject.cpp
@@ -388,9 +388,9 @@ void QbsProject::parse(const QVariantMap &config, const QString &dir)
     params.buildRoot = m_qbsBuildRoot;
     params.projectFilePath = m_fileName;
     params.ignoreDifferentProjectFilePath = false;
-    const qbs::Preferences prefs(m_manager->settings());
-    params.searchPaths = prefs.searchPaths(QLatin1String(QBS_BUILD_DIR));
-    params.pluginPaths = prefs.pluginPaths(QLatin1String(QBS_BUILD_DIR));
+    qbs::Preferences *prefs = QbsManager::preferences();
+    params.searchPaths = prefs->searchPaths(QLatin1String(QBS_BUILD_DIR));
+    params.pluginPaths = prefs->pluginPaths(QLatin1String(QBS_BUILD_DIR));
 
     m_qbsSetupProjectJob
             = qbs::Project::setupProject(params, m_manager->settings(), m_manager->logSink(), 0);
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
index 4420637955a518872b69f1123503823ddad38539..354fb8ba2c7361bbf5738ad0b4257a4f492889ba 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
@@ -74,11 +74,17 @@ const QChar sep = QChar(QLatin1Char('.'));
 
 namespace QbsProjectManager {
 
-qbs::Settings *QbsManager::m_settings = new qbs::Settings(QLatin1String("QtProject"), QLatin1String("qbs"));
+qbs::Settings *QbsManager::m_settings = 0;
+qbs::Preferences *QbsManager::m_preferences = 0;
 
 QbsManager::QbsManager(Internal::QbsProjectManagerPlugin *plugin) :
     m_plugin(plugin)
 {
+    if (!m_settings)
+        m_settings = new qbs::Settings(QLatin1String("QtProject"), QLatin1String("qbs"));
+    if (!m_preferences)
+        m_preferences = new qbs::Preferences(m_settings);
+
     setObjectName(QLatin1String("QbsProjectManager"));
     connect(ProjectExplorer::KitManager::instance(), SIGNAL(kitsChanged()), this, SLOT(pushKitsToQbs()));
 
@@ -148,6 +154,11 @@ qbs::Settings *QbsManager::settings()
     return m_settings;
 }
 
+qbs::Preferences *QbsManager::preferences()
+{
+    return m_preferences;
+}
+
 void QbsManager::addProfile(const QString &name, const QVariantMap &data)
 {
     const QString base = QLatin1String(PROFILES_PREFIX) + name;
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.h b/src/plugins/qbsprojectmanager/qbsprojectmanager.h
index 705271775d7199204dc35b78dd12afb9b89d23e3..56a561a3767b0e0396ded5a707fb2a1d7926d7c5 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanager.h
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.h
@@ -69,6 +69,7 @@ public:
     QStringList profileNames() const;
 
     static qbs::Settings *settings();
+    static qbs::Preferences *preferences();
     Internal::QbsLogSink *logSink() { return m_logSink; }
 
 private slots:
@@ -83,6 +84,7 @@ private:
     Internal::QbsProjectManagerPlugin *m_plugin;
     Internal::QbsLogSink *m_logSink;
     static qbs::Settings *m_settings;
+    static qbs::Preferences *m_preferences;
 };
 
 } // namespace QbsProjectManager