diff --git a/qbs/imports/QtcLibrary.qbs b/qbs/imports/QtcLibrary.qbs
index 75b395a1c26b1daf8c2177b08d896abf214ac38e..6792c834c3cd462786c55cbe9c3fd20fc631634b 100644
--- a/qbs/imports/QtcLibrary.qbs
+++ b/qbs/imports/QtcLibrary.qbs
@@ -19,7 +19,7 @@ QtcProduct {
             flags.push("/INCREMENTAL:NO"); // Speed up startup time when debugging with cdb
         return flags;
     }
-    cpp.installNamePrefix: "@rpath/PlugIns/"
+    cpp.installNamePrefix: "@rpath/Frameworks/"
     cpp.rpaths: qbs.targetOS.contains("osx")
             ? ["@loader_path/..", "@executable_path/.."]
             : ["$ORIGIN", "$ORIGIN/.."]
diff --git a/qtcreator.pri b/qtcreator.pri
index cc09e235ec9f3031cac11c2e614d8052a7867e9b..cf273e412bc896626e1fa6844cf7ed82d2b792e8 100644
--- a/qtcreator.pri
+++ b/qtcreator.pri
@@ -84,8 +84,8 @@ isEmpty(IDE_BUILD_TREE) {
 IDE_APP_PATH = $$IDE_BUILD_TREE/bin
 macx {
     IDE_APP_TARGET   = "Qt Creator"
-    IDE_LIBRARY_PATH = $$IDE_APP_PATH/$${IDE_APP_TARGET}.app/Contents/PlugIns
-    IDE_PLUGIN_PATH  = $$IDE_LIBRARY_PATH
+    IDE_LIBRARY_PATH = $$IDE_APP_PATH/$${IDE_APP_TARGET}.app/Contents/Frameworks
+    IDE_PLUGIN_PATH  = $$IDE_APP_PATH/$${IDE_APP_TARGET}.app/Contents/PlugIns
     IDE_LIBEXEC_PATH = $$IDE_APP_PATH/$${IDE_APP_TARGET}.app/Contents/Resources
     IDE_DATA_PATH    = $$IDE_APP_PATH/$${IDE_APP_TARGET}.app/Contents/Resources
     IDE_DOC_PATH     = $$IDE_DATA_PATH/doc
diff --git a/qtcreator.pro b/qtcreator.pro
index 36a5f3f9a66d2e305068af3dd894a284850a9b46..b5b8ae34057db4347ebca74f0300d2e2680b47f8 100644
--- a/qtcreator.pro
+++ b/qtcreator.pro
@@ -45,15 +45,15 @@ exists(src/shared/qbs/qbs.pro) {
     QBS_RESOURCES_INSTALL_DIR = $${QTC_PREFIX}/share/qtcreator/qbs
     cache(QBS_RESOURCES_INSTALL_DIR)
     macx {
-        QBS_PLUGINS_BUILD_DIR = $${IDE_LIBRARY_PATH}
-        QBS_APPS_RPATH_DIR = @loader_path/../PlugIns
+        QBS_PLUGINS_BUILD_DIR = $${IDE_PLUGIN_PATH}
+        QBS_APPS_RPATH_DIR = @loader_path/../Frameworks
     } else {
-        QBS_PLUGINS_BUILD_DIR = $${IDE_BUILD_TREE}/$${IDE_LIBRARY_BASENAME}/qtcreator
+        QBS_PLUGINS_BUILD_DIR = $${IDE_BUILD_TREE}/$${IDE_LIBRARY_BASENAME}/qtcreator/plugins
         QBS_APPS_RPATH_DIR = \$\$ORIGIN/../$$IDE_LIBRARY_BASENAME/qtcreator
     }
     cache(QBS_PLUGINS_BUILD_DIR)
     cache(QBS_APPS_RPATH_DIR)
-    QBS_PLUGINS_INSTALL_DIR = $${QTC_PREFIX}/$${IDE_LIBRARY_BASENAME}/qtcreator
+    QBS_PLUGINS_INSTALL_DIR = $${QTC_PREFIX}/$${IDE_LIBRARY_BASENAME}/qtcreator/plugins
     cache(QBS_PLUGINS_INSTALL_DIR)
     QBS_LIBRARY_DIRNAME = $${IDE_LIBRARY_BASENAME}
     cache(QBS_LIBRARY_DIRNAME)
diff --git a/qtcreator.qbs b/qtcreator.qbs
index c0c6bfcea1f2c958c8b32e55cf12cbda57ff8f50..c04219488c3e47850a7500793637fb4662703658 100644
--- a/qtcreator.qbs
+++ b/qtcreator.qbs
@@ -20,7 +20,7 @@ Project {
     property string libDirName: "lib"
     property string ide_library_path: {
         if (qbs.targetOS.contains("osx"))
-            return ide_app_target + ".app/Contents/PlugIns"
+            return ide_app_target + ".app/Contents/Frameworks"
         else if (qbs.targetOS.contains("windows"))
             return ide_app_path
         else
@@ -28,7 +28,7 @@ Project {
     }
     property string ide_plugin_path: {
         if (qbs.targetOS.contains("osx"))
-            return ide_library_path
+            return ide_app_target + ".app/Contents/PlugIns"
         else if (qbs.targetOS.contains("windows"))
             return libDirName + "/qtcreator/plugins"
         else
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.pro b/src/plugins/qbsprojectmanager/qbsprojectmanager.pro
index 406c85e15b0478d64f9be86e2bef015ba3f52bee..65f21669db7226eb55866a3f37cebe9d33387eea 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanager.pro
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.pro
@@ -6,7 +6,7 @@ isEmpty(QBS_INSTALL_DIR) {
     QBS_SOURCE_DIR = $$PWD/../../shared/qbs
     include($$QBS_SOURCE_DIR/src/lib/corelib/use_corelib.pri)
     include($$QBS_SOURCE_DIR/src/lib/qtprofilesetup/use_qtprofilesetup.pri)
-    macx:QMAKE_LFLAGS += -Wl,-rpath,@loader_path/ # Mac: fix rpath for qbscore soname
+    osx:QMAKE_LFLAGS += -Wl,-rpath,@loader_path/../Frameworks # OS X: fix rpath for qbscore soname
 } else {
     include($${QBS_INSTALL_DIR}/include/qbs/use_installed_corelib.pri)
     include($${QBS_INSTALL_DIR}/include/qbs/use_installed_qtprofilesetup.pri)
diff --git a/src/plugins/qbsprojectmanager/qbsprojectparser.cpp b/src/plugins/qbsprojectmanager/qbsprojectparser.cpp
index 45e00d92cb9a130a16697bafe69f5437d8b921b9..60f50fce7e6bec22c28865a7e7b4cff4a7d687c6 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectparser.cpp
+++ b/src/plugins/qbsprojectmanager/qbsprojectparser.cpp
@@ -172,7 +172,7 @@ QString QbsProjectParser::pluginsBaseDirectory() const
                                + QLatin1String("/../PlugIns"));
     else
         return QDir::cleanPath(QCoreApplication::applicationDirPath()
-                               + QLatin1String("/../" IDE_LIBRARY_BASENAME "/qtcreator"));
+                               + QLatin1String("/../" IDE_LIBRARY_BASENAME "/qtcreator/plugins"));
 }
 
 } // namespace Internal
diff --git a/src/plugins/qmldesigner/plugindestdir.pri b/src/plugins/qmldesigner/plugindestdir.pri
index 2de740f852f9161cff8b1bcc1e601bf5c519417a..c67bb10b51d46864adfe4e857511fa4498dfee30 100644
--- a/src/plugins/qmldesigner/plugindestdir.pri
+++ b/src/plugins/qmldesigner/plugindestdir.pri
@@ -1,7 +1,7 @@
 macx {
-  DESTDIR = $$IDE_LIBRARY_PATH/QmlDesigner
+  DESTDIR = $$IDE_PLUGIN_PATH/QmlDesigner
 } else {
-  DESTDIR = $$IDE_LIBRARY_PATH/qmldesigner
-  target.path  = $$QTC_PREFIX/$$IDE_LIBRARY_BASENAME/qtcreator/qmldesigner
+  DESTDIR = $$IDE_PLUGIN_PATH/qmldesigner
+  target.path  = $$QTC_PREFIX/$$IDE_LIBRARY_BASENAME/qtcreator/plugins/qmldesigner
   INSTALLS    += target
 }
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp
index 6049f997055c6225de5fceea10326a5c1b89bd27..e07c6d4ae7ecc5bfdc53bde51cd85eb11d25de7c 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.cpp
+++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp
@@ -139,7 +139,7 @@ bool QmlDesignerPlugin::initialize(const QStringList & /*arguments*/, QString *e
     const QString pluginPath = Utils::HostOsInfo::isMacHost()
             ? QString(QCoreApplication::applicationDirPath() + "/../PlugIns/QmlDesigner")
             : QString(QCoreApplication::applicationDirPath() + "/../"
-                      + QLatin1String(IDE_LIBRARY_BASENAME) + "/qtcreator/qmldesigner");
+                      + QLatin1String(IDE_LIBRARY_BASENAME) + "/qtcreator/plugins/qmldesigner");
     data->pluginManager.setPluginPaths(QStringList() << pluginPath);
 
     createDesignModeWidget();
diff --git a/src/qtcreatorlibrary.pri b/src/qtcreatorlibrary.pri
index e74d50a0e27649aba90c16a61ed8e7f2cf4292bf..700f5b495a6052f2fa96928b80d075909c3da13a 100644
--- a/src/qtcreatorlibrary.pri
+++ b/src/qtcreatorlibrary.pri
@@ -12,6 +12,7 @@ win32 {
 
 DESTDIR = $$IDE_LIBRARY_PATH
 
+osx: QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/Frameworks/
 include(rpath.pri)
 
 TARGET = $$qtLibraryName($$TARGET)
diff --git a/src/qtcreatorplugin.pri b/src/qtcreatorplugin.pri
index 6b9b0237cf1f39166e50954549b8c978df90fe3a..a1fd8253d9359c3bf23b2b1f1e2350c343398251 100644
--- a/src/qtcreatorplugin.pri
+++ b/src/qtcreatorplugin.pri
@@ -110,17 +110,8 @@ pluginspec2json.CONFIG += no_link
 moc_header.depends += $$pluginspec2json.output
 QMAKE_EXTRA_COMPILERS += pluginspec2json
 
-macx {
-    QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/PlugIns/
-    QMAKE_LFLAGS += -Wl,-rpath,@loader_path/../,-rpath,@executable_path/../
-} else:linux-* {
-    #do the rpath by hand since it's not possible to use ORIGIN in QMAKE_RPATHDIR
-    QMAKE_RPATHDIR += \$\$ORIGIN
-    QMAKE_RPATHDIR += \$\$ORIGIN/..
-    IDE_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
-    QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${IDE_PLUGIN_RPATH}\'
-    QMAKE_RPATHDIR =
-}
+osx: QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/PlugIns/
+include(rpath.pri)
 
 contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
 
diff --git a/src/rpath.pri b/src/rpath.pri
index de56f11ae5b0758132f3b9f28079664879d7369d..0d8911a4d961b5ef0aada5ad9917fa27812f4519 100644
--- a/src/rpath.pri
+++ b/src/rpath.pri
@@ -1,5 +1,4 @@
 macx {
-    QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/PlugIns/
     QMAKE_LFLAGS += -Wl,-rpath,@loader_path/../,-rpath,@executable_path/../
 } else:linux-* {
     #do the rpath by hand since it's not possible to use ORIGIN in QMAKE_RPATHDIR
diff --git a/src/src.qbs b/src/src.qbs
index 08562c12fb7e44ccacd540a451601fb965e87a44..0ef11cb4a01198b14f3f0dc06d35e8a053fbe70b 100644
--- a/src/src.qbs
+++ b/src/src.qbs
@@ -30,9 +30,7 @@ Project {
             ? ["@loader_path/" + FileInfo.relativePath(appInstallDir, libInstallDir)]
             : ["$ORIGIN/..", "$ORIGIN/../" + project.ide_library_path]
         property string resourcesInstallDir: project.ide_data_path + "/qbs"
-        property string pluginsInstallDir: qbs.targetOS.contains("windows")
-            ? project.libDirName + "/qtcreator"
-            : project.ide_library_path
+        property string pluginsInstallDir: project.ide_plugin_path
         property string appInstallDir: project.ide_bin_path
         property string relativePluginsPath: FileInfo.relativePath(appInstallDir, pluginsInstallDir)
         property string relativeSearchPath: FileInfo.relativePath(appInstallDir,