diff --git a/src/plugins/cppeditor/cppoutline.cpp b/src/plugins/cppeditor/cppoutline.cpp
index 5bab2160bee8c5a3d69cfd164c83dea09715e425..146b060ae68d4629ecfd92533afb2d80ec8c1f0d 100644
--- a/src/plugins/cppeditor/cppoutline.cpp
+++ b/src/plugins/cppeditor/cppoutline.cpp
@@ -120,19 +120,16 @@ void CppOutlineWidget::updateSelectionInText(const QItemSelection &selection)
         CPlusPlus::Symbol *symbol = m_model->symbolFromIndex(index);
         if (symbol) {
             m_blockCursorSync = true;
-            unsigned line, column;
-
-            m_model->document()->translationUnit()->getPosition(symbol->startOffset(), &line, &column);
 
             if (debug)
-                qDebug() << "CppOutline - moving cursor to" << line << column - 1;
+                qDebug() << "CppOutline - moving cursor to" << symbol->line() << symbol->column() - 1;
 
             Core::EditorManager *editorManager = Core::EditorManager::instance();
             editorManager->cutForwardNavigationHistory();
             editorManager->addCurrentPositionToNavigationHistory();
 
             // line has to be 1 based, column 0 based!
-            m_editor->gotoLine(line, column - 1);
+            m_editor->gotoLine(symbol->line(), symbol->column() - 1);
             m_blockCursorSync = false;
         }
     }