diff --git a/src/plugins/projectexplorer/applicationlauncher_x11.cpp b/src/plugins/projectexplorer/applicationlauncher_x11.cpp
index 09b2824..432dfa4 100644
--- a/src/plugins/projectexplorer/applicationlauncher_x11.cpp
+++ b/src/plugins/projectexplorer/applicationlauncher_x11.cpp
@@ -40,6 +40,10 @@
 #include <QtCore/QTimer>
 #include <QtCore/QTextCodec>
 
+#include "projectexplorerconstants.h"
+#include "projectexplorer.h"
+#include "projectexplorersettings.h"
+
 /*!
     \class ProjectExplorer::ApplicationLauncher
 
@@ -74,13 +78,17 @@ ApplicationLauncherPrivate::ApplicationLauncherPrivate() :
 ApplicationLauncher::ApplicationLauncher(QObject *parent)
     : QObject(parent), d(new ApplicationLauncherPrivate)
 {
-    d->m_guiProcess.setReadChannelMode(QProcess::SeparateChannels);
-    connect(&d->m_guiProcess, SIGNAL(error(QProcess::ProcessError)),
-        this, SLOT(guiProcessError()));
+    if (ProjectExplorerPlugin::instance()->projectExplorerSettings().mergeStdErrAndStdOut){
+        d->m_guiProcess.setReadChannelMode(QProcess::MergedChannels);
+    } else {
+        d->m_guiProcess.setReadChannelMode(QProcess::SeparateChannels);
+        connect(&d->m_guiProcess, SIGNAL(readyReadStandardError()),
+            this, SLOT(readStandardError()));
+    }
     connect(&d->m_guiProcess, SIGNAL(readyReadStandardOutput()),
         this, SLOT(readStandardOutput()));
-    connect(&d->m_guiProcess, SIGNAL(readyReadStandardError()),
-        this, SLOT(readStandardError()));
+    connect(&d->m_guiProcess, SIGNAL(error(QProcess::ProcessError)),
+        this, SLOT(guiProcessError()));
     connect(&d->m_guiProcess, SIGNAL(finished(int, QProcess::ExitStatus)),
             this, SLOT(processDone(int, QProcess::ExitStatus)));
     connect(&d->m_guiProcess, SIGNAL(started()),
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 75f4a20..e7cb164 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -895,6 +895,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
         d->m_projectExplorerSettings.showCompilerOutput = s->value("ProjectExplorer/Settings/ShowCompilerOutput", false).toBool();
         d->m_projectExplorerSettings.showRunOutput = s->value("ProjectExplorer/Settings/ShowRunOutput", true).toBool();
         d->m_projectExplorerSettings.cleanOldAppOutput = s->value("ProjectExplorer/Settings/CleanOldAppOutput", false).toBool();
+        d->m_projectExplorerSettings.mergeStdErrAndStdOut = s->value("ProjectExplorer/Settings/MergeStdErrAndStdOut", false).toBool();
         d->m_projectExplorerSettings.wrapAppOutput = s->value("ProjectExplorer/Settings/WrapAppOutput", true).toBool();
         d->m_projectExplorerSettings.useJom = s->value("ProjectExplorer/Settings/UseJom", true).toBool();
         d->m_projectExplorerSettings.autorestoreLastSession = s->value("ProjectExplorer/Settings/AutoRestoreLastSession", false).toBool();
@@ -1187,6 +1188,7 @@ void ProjectExplorerPlugin::savePersistentSettings()
         s->setValue("ProjectExplorer/Settings/ShowCompilerOutput", d->m_projectExplorerSettings.showCompilerOutput);
         s->setValue("ProjectExplorer/Settings/ShowRunOutput", d->m_projectExplorerSettings.showRunOutput);
         s->setValue("ProjectExplorer/Settings/CleanOldAppOutput", d->m_projectExplorerSettings.cleanOldAppOutput);
+        s->setValue("ProjectExplorer/Settings/MergeStdErrAndStdOut", d->m_projectExplorerSettings.mergeStdErrAndStdOut);
         s->setValue("ProjectExplorer/Settings/WrapAppOutput", d->m_projectExplorerSettings.wrapAppOutput);
         s->setValue("ProjectExplorer/Settings/UseJom", d->m_projectExplorerSettings.useJom);
         s->setValue("ProjectExplorer/Settings/AutoRestoreLastSession", d->m_projectExplorerSettings.autorestoreLastSession);
diff --git a/src/plugins/projectexplorer/projectexplorersettings.h b/src/plugins/projectexplorer/projectexplorersettings.h
index a9c582f..8863ed7 100644
--- a/src/plugins/projectexplorer/projectexplorersettings.h
+++ b/src/plugins/projectexplorer/projectexplorersettings.h
@@ -43,7 +43,7 @@ struct ProjectExplorerSettings
     ProjectExplorerSettings() :
         buildBeforeDeploy(true), deployBeforeRun(true),
         saveBeforeBuild(false), showCompilerOutput(false),
-        showRunOutput(true), cleanOldAppOutput(false),
+        showRunOutput(true), cleanOldAppOutput(false), mergeStdErrAndStdOut(false),
         wrapAppOutput(true), useJom(true),
         autorestoreLastSession(false), prompToStopRunControl(false),
         maxAppOutputLines(100000)
@@ -55,6 +55,7 @@ struct ProjectExplorerSettings
     bool showCompilerOutput;
     bool showRunOutput;
     bool cleanOldAppOutput;
+    bool mergeStdErrAndStdOut;
     bool wrapAppOutput;
     bool useJom;
     bool autorestoreLastSession; // This option is set in the Session Manager!
@@ -75,6 +76,7 @@ inline bool operator==(const ProjectExplorerSettings &p1, const ProjectExplorerS
             && p1.showCompilerOutput == p2.showCompilerOutput
             && p1.showRunOutput == p2.showRunOutput
             && p1.cleanOldAppOutput == p2.cleanOldAppOutput
+            && p1.mergeStdErrAndStdOut == p2.mergeStdErrAndStdOut
             && p1.wrapAppOutput == p2.wrapAppOutput
             && p1.useJom == p2.useJom
             && p1.autorestoreLastSession == p2.autorestoreLastSession
diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.cpp b/src/plugins/projectexplorer/projectexplorersettingspage.cpp
index bf696d3..ef731da 100644
--- a/src/plugins/projectexplorer/projectexplorersettingspage.cpp
+++ b/src/plugins/projectexplorer/projectexplorersettingspage.cpp
@@ -50,7 +50,9 @@ ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget(QWidget *parent) :
     QWidget(parent)
 {
     m_ui.setupUi(this);
-#ifndef Q_OS_WIN
+#ifdef Q_OS_WIN
+    setMergeStdErrVisible(false);
+#else
     setJomVisible(false);
 #endif
     m_ui.directoryButtonGroup->setId(m_ui.currentDirectoryRadioButton, UseCurrentDirectory);
@@ -65,6 +67,12 @@ void ProjectExplorerSettingsWidget::setJomVisible(bool v)
     m_ui.jomLabel->setVisible(v);
 }
 
+void ProjectExplorerSettingsWidget::setMergeStdErrVisible(bool v)
+{
+    m_ui.mergeStdErrAndStdOutCheckBox->setVisible(v);
+    m_ui.mergeStdErrAndStdOutLabel->setVisible(v);
+}
+
 ProjectExplorerSettings ProjectExplorerSettingsWidget::settings() const
 {
     ProjectExplorerSettings pes;
@@ -74,6 +82,7 @@ ProjectExplorerSettings ProjectExplorerSettingsWidget::settings() const
     pes.showCompilerOutput = m_ui.showCompileOutputCheckBox->isChecked();
     pes.showRunOutput = m_ui.showRunOutputCheckBox->isChecked();
     pes.cleanOldAppOutput = m_ui.cleanOldAppOutputCheckBox->isChecked();
+    pes.mergeStdErrAndStdOut = m_ui.mergeStdErrAndStdOutCheckBox->isChecked();
     pes.wrapAppOutput = m_ui.wrapAppOutputCheckBox->isChecked();
     pes.useJom = m_ui.jomCheckbox->isChecked();
     pes.prompToStopRunControl = m_ui.promptToStopRunControlCheckBox->isChecked();
@@ -89,6 +98,7 @@ void ProjectExplorerSettingsWidget::setSettings(const ProjectExplorerSettings  &
     m_ui.showCompileOutputCheckBox->setChecked(pes.showCompilerOutput);
     m_ui.showRunOutputCheckBox->setChecked(pes.showRunOutput);
     m_ui.cleanOldAppOutputCheckBox->setChecked(pes.cleanOldAppOutput);
+    m_ui.mergeStdErrAndStdOutCheckBox->setChecked(pes.mergeStdErrAndStdOut);
     m_ui.wrapAppOutputCheckBox->setChecked(pes.wrapAppOutput);
     m_ui.jomCheckbox->setChecked(pes.useJom);
     m_ui.promptToStopRunControlCheckBox->setChecked(pes.prompToStopRunControl);
@@ -136,6 +146,8 @@ QString ProjectExplorerSettingsWidget::searchKeywords() const
                 + sep + m_ui.deployProjectBeforeRunCheckBox->text()
                 + sep + m_ui.showCompileOutputCheckBox->text()
                 + sep + m_ui.cleanOldAppOutputCheckBox->text()
+                + sep + m_ui.mergeStdErrAndStdOutCheckBox->text()
+                + sep + m_ui.mergeStdErrAndStdOutLabel->text()
                 + sep + m_ui.wrapAppOutputCheckBox->text()
                 + sep + m_ui.jomLabel->text()
                 ;
diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.h b/src/plugins/projectexplorer/projectexplorersettingspage.h
index 1209a14..2074b5b 100644
--- a/src/plugins/projectexplorer/projectexplorersettingspage.h
+++ b/src/plugins/projectexplorer/projectexplorersettingspage.h
@@ -65,6 +65,7 @@ private slots:
 
 private:
     void setJomVisible(bool);
+    void setMergeStdErrVisible(bool);
 
     Ui::ProjectExplorerSettingsPageUi m_ui;
     mutable QString m_searchKeywords;
diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.ui b/src/plugins/projectexplorer/projectexplorersettingspage.ui
index bf5343b..693452a 100644
--- a/src/plugins/projectexplorer/projectexplorersettingspage.ui
+++ b/src/plugins/projectexplorer/projectexplorersettingspage.ui
@@ -98,6 +98,30 @@
        </widget>
       </item>
       <item>
+       <layout class="QVBoxLayout" name="verticalLayout_4">
+        <property name="spacing">
+         <number>0</number>
+        </property>
+        <item>
+         <widget class="QCheckBox" name="mergeStdErrAndStdOutCheckBox">
+          <property name="text">
+           <string>Merge stderr and stdout</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="mergeStdErrAndStdOutLabel">
+          <property name="text">
+           <string>preserves interleaving, but disables some highlighting</string>
+          </property>
+          <property name="indent">
+           <number>20</number>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item>
        <widget class="QCheckBox" name="wrapAppOutputCheckBox">
         <property name="text">
          <string>Word-wrap application output</string>
