diff --git a/src/plugins/qt4projectmanager/projectloadwizard.cpp b/src/plugins/qt4projectmanager/projectloadwizard.cpp
index 61f03aeff2b124da93b93165080fc20c9caa5821..5dd202f5f7bda3e32aef0c8c3010ea8099becb5f 100644
--- a/src/plugins/qt4projectmanager/projectloadwizard.cpp
+++ b/src/plugins/qt4projectmanager/projectloadwizard.cpp
@@ -66,6 +66,18 @@ ProjectLoadWizard::ProjectLoadWizard(Qt4Project *project, QWidget *parent, Qt::W
                 QtVersionManager::scanMakeFile(directory, m_importVersion->defaultBuildConfig());
         m_importBuildConfig = result.first;
         m_additionalArguments = result.second;
+
+        QString versionSpec = m_importVersion->sourcePath() + "/mkspecs/" + m_importVersion->mkspec();
+        QString parsedSpec = Qt4Project::extractSpecFromArgumentList(m_additionalArguments);
+        QString parsedSpecOrginal = parsedSpec;
+        if (QFileInfo(parsedSpec).isRelative())
+            parsedSpec = QDir::cleanPath(directory + "/" + parsedSpec);
+        m_additionalArguments = Qt4Project::removeSpecFromArgumentList(m_additionalArguments);
+        if (parsedSpec != versionSpec) {
+            m_additionalArguments.prepend(parsedSpecOrginal);
+            m_additionalArguments.prepend("-spec");
+        }
+
     }
 
     // So now we have the version and the configuration for that version
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 338621b248c3bdfa9dd42a901ac458e73a125e35..acb72a14b7dfd4453f593c95fab2d933edcf03ae 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -1106,7 +1106,7 @@ void Qt4Project::invalidateCachedTargetInformation()
 // intelligent matching for -cache, but i guess people rarely
 // do use that.
 
-QStringList removeSpecFromArgumentList(const QStringList &old)
+QStringList Qt4Project::removeSpecFromArgumentList(const QStringList &old)
 {
     if (!old.contains("-spec") && !old.contains("-platform") && !old.contains("-cache"))
         return old;
@@ -1128,7 +1128,7 @@ QStringList removeSpecFromArgumentList(const QStringList &old)
     return newList;
 }
 
-QString extractSpecFromArgumentList(const QStringList &list)
+QString Qt4Project::extractSpecFromArgumentList(const QStringList &list)
 {
     int index = list.indexOf("-spec");
     if (index == -1)
@@ -1157,7 +1157,7 @@ bool Qt4Project::compareBuildConfigurationToImportFrom(const QString &buildConfi
                 // and compare that on its own
                 QString actualSpec = extractSpecFromArgumentList(qmakeStep()->value(buildConfiguration, "qmakeArgs").toStringList());
                 if (actualSpec.isEmpty())
-                    actualSpec = qtVersion(buildConfiguration)->mkspec();
+                    actualSpec = version->mkspec();
                 QString parsedSpec = extractSpecFromArgumentList(result.second);
 
                 // Now to convert the actualSpec to a absolute path, we go through a few hops
@@ -1180,7 +1180,6 @@ bool Qt4Project::compareBuildConfigurationToImportFrom(const QString &buildConfi
                 if (QFileInfo(parsedSpec).isRelative())
                     parsedSpec = QDir::cleanPath(workingDirectory + "/" + parsedSpec);
 
-
                 qDebug()<<"before:"<<qmakeStep()->value(buildConfiguration, "qmakeArgs").toStringList();
                 QStringList actualArgs = removeSpecFromArgumentList(qmakeStep()->value(buildConfiguration, "qmakeArgs").toStringList());
                 qDebug()<<"after:"<<actualArgs;
diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h
index c6319f6dbb229cf4cd02f77498ac518f42f76295..f34bf81f2a4f4dbf73d632797daeebcf26d5d258 100644
--- a/src/plugins/qt4projectmanager/qt4project.h
+++ b/src/plugins/qt4projectmanager/qt4project.h
@@ -198,6 +198,8 @@ public:
 
     bool compareBuildConfigurationToImportFrom(const QString &buildConfiguration, const QString &workingDirectory);
 
+    static QStringList removeSpecFromArgumentList(const QStringList &old);
+    static QString extractSpecFromArgumentList(const QStringList &list);
 signals:
     void targetInformationChanged();
 
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
index 25658b5a9cddf27cac684f9a7e04f0bf33492b1a..2f4b2273ae97ee8744814eeaed7cb6eb60ebfa04 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
@@ -231,48 +231,57 @@ void Qt4ProjectConfigWidget::shadowBuildLineEditTextChanged()
 
 void Qt4ProjectConfigWidget::importLabelClicked()
 {
-    if (m_ui->shadowBuildCheckBox->isChecked()) {
-        QString directory = m_ui->shadowBuildDirEdit->path();
-        if (!directory.isEmpty()) {
-            QString qtPath = QtVersionManager::findQtVersionFromMakefile(directory);
-            if (!qtPath.isEmpty()) {
-                QtVersionManager *vm = QtVersionManager::instance();
-                QtVersion *version = vm->qtVersionForDirectory(qtPath);
-                if (!version) {
-                    version = new QtVersion(QFileInfo(qtPath).baseName(), qtPath);
-                    vm->addVersion(version);
-                }
-
-                QPair<QtVersion::QmakeBuildConfig, QStringList> result =
-                        QtVersionManager::scanMakeFile(directory, version->defaultBuildConfig());
-                QtVersion::QmakeBuildConfig qmakeBuildConfig = result.first;
-                QStringList additionalArguments = result.second;
-
-                // So we got all the information now apply it...
-                m_pro->setQtVersion(m_buildConfiguration, version->uniqueId());
-                // Combo box will be updated at the end
-
-                QMakeStep *qmakeStep = m_pro->qmakeStep();
-                qmakeStep->setValue(m_buildConfiguration, "qmakeArgs", additionalArguments);
-                MakeStep *makeStep = m_pro->makeStep();
-
-                m_pro->setValue(m_buildConfiguration, "buildConfiguration", int(qmakeBuildConfig));
-                // Adjust command line arguments, this is ugly as hell
-                // If we are switching to BuildAll we want "release" in there and no "debug"
-                // or "debug" in there and no "release"
-                // If we are switching to not BuildAl we want neither "release" nor "debug" in there
-                QStringList makeCmdArguments = makeStep->value(m_buildConfiguration, "makeargs").toStringList();
-                bool debug = qmakeBuildConfig & QtVersion::DebugBuild;
-                if (qmakeBuildConfig & QtVersion::BuildAll) {
-                    makeCmdArguments.removeAll(debug ? "release" : "debug");
-                    if (!makeCmdArguments.contains(debug ? "debug" : "release"))
-                        makeCmdArguments.append(debug ? "debug" : "release");
-                } else {
-                    makeCmdArguments.removeAll("debug");
-                    makeCmdArguments.removeAll("release");
-                }
-                makeStep->setValue(m_buildConfiguration, "makeargs", makeCmdArguments);
+    QString directory = m_pro->buildDirectory(m_buildConfiguration);
+    if (!directory.isEmpty()) {
+        QString qtPath = QtVersionManager::findQtVersionFromMakefile(directory);
+        if (!qtPath.isEmpty()) {
+            QtVersionManager *vm = QtVersionManager::instance();
+            QtVersion *version = vm->qtVersionForDirectory(qtPath);
+            if (!version) {
+                version = new QtVersion(QFileInfo(qtPath).baseName(), qtPath);
+                vm->addVersion(version);
             }
+
+            QPair<QtVersion::QmakeBuildConfig, QStringList> result =
+                    QtVersionManager::scanMakeFile(directory, version->defaultBuildConfig());
+            QtVersion::QmakeBuildConfig qmakeBuildConfig = result.first;
+            QStringList additionalArguments = result.second;
+
+            QString versionSpec = version->sourcePath() + "/mkspecs/" + version->mkspec();
+            QString parsedSpec = Qt4Project::extractSpecFromArgumentList(additionalArguments);
+            QString parsedSpecOrginal = parsedSpec;
+            if (QFileInfo(parsedSpec).isRelative())
+                parsedSpec = QDir::cleanPath(directory + "/" + parsedSpec);
+            additionalArguments = Qt4Project::removeSpecFromArgumentList(additionalArguments);
+            if (parsedSpec != versionSpec) {
+                additionalArguments.prepend(parsedSpecOrginal);
+                additionalArguments.prepend("-spec");
+            }
+
+            // So we got all the information now apply it...
+            m_pro->setQtVersion(m_buildConfiguration, version->uniqueId());
+            // Combo box will be updated at the end
+
+            QMakeStep *qmakeStep = m_pro->qmakeStep();
+            qmakeStep->setValue(m_buildConfiguration, "qmakeArgs", additionalArguments);
+            MakeStep *makeStep = m_pro->makeStep();
+
+            m_pro->setValue(m_buildConfiguration, "buildConfiguration", int(qmakeBuildConfig));
+            // Adjust command line arguments, this is ugly as hell
+            // If we are switching to BuildAll we want "release" in there and no "debug"
+            // or "debug" in there and no "release"
+            // If we are switching to not BuildAl we want neither "release" nor "debug" in there
+            QStringList makeCmdArguments = makeStep->value(m_buildConfiguration, "makeargs").toStringList();
+            bool debug = qmakeBuildConfig & QtVersion::DebugBuild;
+            if (qmakeBuildConfig & QtVersion::BuildAll) {
+                makeCmdArguments.removeAll(debug ? "release" : "debug");
+                if (!makeCmdArguments.contains(debug ? "debug" : "release"))
+                    makeCmdArguments.append(debug ? "debug" : "release");
+            } else {
+                makeCmdArguments.removeAll("debug");
+                makeCmdArguments.removeAll("release");
+            }
+            makeStep->setValue(m_buildConfiguration, "makeargs", makeCmdArguments);
         }
     }
     setupQtVersionsComboBox();