diff --git a/src/plugins/glsleditor/glsleditor.cpp b/src/plugins/glsleditor/glsleditor.cpp
index 26a55b7e1e4060c4e903602b4eefca232a6f332c..cc0e8b4cba97943dfc773d43b32d5a485a786e4d 100644
--- a/src/plugins/glsleditor/glsleditor.cpp
+++ b/src/plugins/glsleditor/glsleditor.cpp
@@ -283,10 +283,15 @@ void GLSLTextEditor::updateDocumentNow()
     warningFormat.setUnderlineColor(Qt::darkYellow);
 
     QList<QTextEdit::ExtraSelection> sels;
+    QSet<int> errors;
 
     foreach (const DiagnosticMessage &m, engine.diagnosticMessages()) {
         if (! m.line())
             continue;
+        else if (errors.contains(m.line()))
+            continue;
+
+        errors.insert(m.line());
 
         QTextCursor cursor(document()->findBlockByNumber(m.line() - 1));
         cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);