diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 97ed8c9a4a76a89131574e7b25fa90106865200f..8c23d975df5d876a7a04d7b85ad8c6d76b2df5ff 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -2253,13 +2253,19 @@ int BaseTextEditor::extraAreaWidth(int *markWidthPtr) const
     const QFontMetrics fm(d->m_extraArea->fontMetrics());
 
     if (d->m_lineNumbersVisible) {
+        QFont fnt = d->m_extraArea->font();
+        // this works under the assumption that bold or italic can only make a font wider
+        fnt.setBold(d->m_currentLineNumberFormat.font().bold());
+        fnt.setItalic(d->m_currentLineNumberFormat.font().italic());
+        const QFontMetrics linefm(fnt);
+
         int digits = 2;
         int max = qMax(1, blockCount());
         while (max >= 100) {
             max /= 10;
             ++digits;
         }
-        space += fm.width(QLatin1Char('9')) * digits;
+        space += linefm.width(QLatin1Char('9')) * digits;
     }
     int markWidth = 0;
 
@@ -2332,7 +2338,7 @@ void BaseTextEditor::extraAreaPaintEvent(QPaintEvent *e)
     QPalette pal = d->m_extraArea->palette();
     pal.setCurrentColorGroup(QPalette::Active);
     QPainter painter(d->m_extraArea);
-    QFontMetrics fm(painter.fontMetrics());
+    const QFontMetrics fm(d->m_extraArea->font());
     int fmLineSpacing = fm.lineSpacing();
 
     int markWidth = 0;