diff --git a/src/plugins/projectexplorer/outputwindow.cpp b/src/plugins/projectexplorer/outputwindow.cpp
index d886584db077bc463a39043b3b7a39ed5d552114..d2f7ec7ac2793a14b0b3c96cc0f277dd9aefaf0d 100644
--- a/src/plugins/projectexplorer/outputwindow.cpp
+++ b/src/plugins/projectexplorer/outputwindow.cpp
@@ -341,6 +341,7 @@ OutputWindow::OutputWindow(QWidget *parent)
     : QPlainTextEdit(parent)
 {
     m_enforceNewline = false;
+    m_scrollToBottom = false;
 
     setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
     //setCenterOnScroll(false);
@@ -392,8 +393,18 @@ OutputWindow::~OutputWindow()
     Core::ICore::instance()->removeContextObject(m_outputWindowContext);
 }
 
+void OutputWindow::showEvent(QShowEvent *e)
+{
+    QPlainTextEdit::showEvent(e);
+    if (m_scrollToBottom) {
+        verticalScrollBar()->setValue(verticalScrollBar()->maximum());
+    }
+    m_scrollToBottom = false;
+}
+
 void OutputWindow::appendOutput(const QString &out)
 {
+    m_scrollToBottom = true;
     QString s = out;
     m_enforceNewline = true; // make appendOutputInline put in a newline next time
     if (s.endsWith(QLatin1Char('\n'))) {
@@ -407,6 +418,7 @@ void OutputWindow::appendOutput(const QString &out)
 
 void OutputWindow::appendOutputInline(const QString &out)
 {
+    m_scrollToBottom = true;
     setMaximumBlockCount(MaxBlockCount);
 
     int newline = -1;
@@ -439,6 +451,7 @@ void OutputWindow::appendOutputInline(const QString &out)
 
 void OutputWindow::insertLine()
 {
+    m_scrollToBottom = true;
     setMaximumBlockCount(MaxBlockCount);
     appendPlainText(QString());
     enableUndoRedo();
diff --git a/src/plugins/projectexplorer/outputwindow.h b/src/plugins/projectexplorer/outputwindow.h
index 6820f5076e012f368f2e25c211fbb1de09a95316..ce81025bdbda87623d56710547b88eb979307213 100644
--- a/src/plugins/projectexplorer/outputwindow.h
+++ b/src/plugins/projectexplorer/outputwindow.h
@@ -126,10 +126,13 @@ public:
     void appendOutputInline(const QString &out);
     void insertLine();
 
+    void showEvent(QShowEvent *);
+
 private:
     Core::BaseContext *m_outputWindowContext;
     void enableUndoRedo();
     bool m_enforceNewline;
+    bool m_scrollToBottom;
 };
 
 #if 0