diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp
index 754b886f9604511230ace5525737706c6d4d2ca0..dc5f5ed7ecb01bb313cb33d44587075250bf1b55 100644
--- a/src/plugins/qt4projectmanager/qt4target.cpp
+++ b/src/plugins/qt4projectmanager/qt4target.cpp
@@ -970,10 +970,33 @@ bool less(const BuildConfigurationInfo &a, const BuildConfigurationInfo &b)
         return true;
     if (a.qtVersionId > b.qtVersionId)
         return false;
-    if (a.buildConfig < b.buildConfig)
-        return true;
-    if (a.buildConfig > b.buildConfig)
-        return false;
+
+    if (a.buildConfig != b.buildConfig) {
+        QtSupport::BaseQtVersion *version = a.version();
+        QtSupport::BaseQtVersion::QmakeBuildConfigs defaultBuildConfigs = QtSupport::BaseQtVersion::DebugBuild;
+        if (version)
+            defaultBuildConfigs = version->defaultBuildConfig();
+
+        bool adebug = a.buildConfig & QtSupport::BaseQtVersion::DebugBuild;
+        bool bdebug = b.buildConfig & QtSupport::BaseQtVersion::DebugBuild;
+        bool defaultdebug = defaultBuildConfigs & QtSupport::BaseQtVersion::DebugBuild;
+
+        if (adebug != bdebug)
+            return (adebug == defaultdebug);
+
+        bool abuildall = a.buildConfig & QtSupport::BaseQtVersion::BuildAll;
+        bool bbuildall = b.buildConfig & QtSupport::BaseQtVersion::BuildAll;
+        bool defaultbuildall = defaultBuildConfigs & QtSupport::BaseQtVersion::BuildAll;
+
+        if (abuildall != bbuildall)
+            return (abuildall == defaultbuildall);
+
+        // Those cases can't happen
+        if (a.buildConfig < b.buildConfig)
+            return true;
+        if (a.buildConfig > b.buildConfig)
+            return false;
+    }
     if (a.additionalArguments < b.additionalArguments)
         return true;
     if (a.additionalArguments > b.additionalArguments)
@@ -986,8 +1009,6 @@ bool less(const BuildConfigurationInfo &a, const BuildConfigurationInfo &b)
 
 void Qt4DefaultTargetSetupWidget::setBuildConfigurationInfos(QList<BuildConfigurationInfo> infos, bool resetDirectories)
 {
-    // This is somewhat ugly in that we used to sort the buildconfigurations in the order
-    // that the default for that qt version is first
     qSort(infos.begin(), infos.end(), less);
 
     // Existing builds, to figure out which newly added