diff --git a/src/plugins/projectexplorer/compileoutputwindow.cpp b/src/plugins/projectexplorer/compileoutputwindow.cpp
index 1238fa33f515462f9a08d5cb98c064c60456f3b2..95e12558ad6caa1ff2035e0ed3afa19057fd41de 100644
--- a/src/plugins/projectexplorer/compileoutputwindow.cpp
+++ b/src/plugins/projectexplorer/compileoutputwindow.cpp
@@ -47,6 +47,10 @@
 using namespace ProjectExplorer;
 using namespace ProjectExplorer::Internal;
 
+namespace {
+const int MAX_LINECOUNT = 10000;
+}
+
 CompileOutputWindow::CompileOutputWindow(BuildManager * /*bm*/)
 {
     m_textEdit = new QPlainTextEdit();
@@ -92,7 +96,7 @@ QWidget *CompileOutputWindow::outputWidget(QWidget *)
 
 void CompileOutputWindow::appendText(const QString &text, const QTextCharFormat &textCharFormat)
 {
-    if (m_textEdit->document()->blockCount() > 10000)
+    if (m_textEdit->document()->blockCount() > MAX_LINECOUNT)
         return;
     bool shouldScroll = (m_textEdit->verticalScrollBar()->value() ==
                          m_textEdit->verticalScrollBar()->maximum());
@@ -104,7 +108,7 @@ void CompileOutputWindow::appendText(const QString &text, const QTextCharFormat
     cursor.beginEditBlock();
     cursor.insertText(textWithNewline, textCharFormat);
 
-    if (m_textEdit->document()->blockCount() > 10000) {
+    if (m_textEdit->document()->blockCount() > MAX_LINECOUNT) {
         QTextCharFormat tmp;
         tmp.setFontWeight(QFont::Bold);
         cursor.insertText(tr("Additional output omitted\n"), tmp);
@@ -160,8 +164,10 @@ bool CompileOutputWindow::canNavigate()
 
 void CompileOutputWindow::registerPositionOf(const Task &task)
 {
-    QTextBlock block(m_textEdit->textCursor().block());
-    m_taskPositions.insert(task.taskId, block.position() + block.length() + 1);
+    int blocknumber = m_textEdit->blockCount();
+    if (blocknumber > MAX_LINECOUNT)
+        return;
+    m_taskPositions.insert(task.taskId, blocknumber - 1);
 }
 
 bool CompileOutputWindow::knowsPositionOf(const Task &task)
@@ -172,7 +178,7 @@ bool CompileOutputWindow::knowsPositionOf(const Task &task)
 void CompileOutputWindow::showPositionOf(const Task &task)
 {
     int position = m_taskPositions.value(task.taskId);
-    QTextCursor newCursor(m_textEdit->document()->findBlock(position));
+    QTextCursor newCursor(m_textEdit->document()->findBlockByNumber(position));
     newCursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
     m_textEdit->setTextCursor(newCursor);
 }