diff --git a/src/plugins/bineditor/bineditor.cpp b/src/plugins/bineditor/bineditor.cpp
index 3a1cff302f4a973d8d8ee33d06ba03cdb4a60fed..306de5d80adcdddc47c68a5ff6adeafa89c92640 100644
--- a/src/plugins/bineditor/bineditor.cpp
+++ b/src/plugins/bineditor/bineditor.cpp
@@ -439,13 +439,13 @@ bool BinEditor::inTextArea(const QPoint &pos) const
     return (x > 16 * m_columnWidth + m_charWidth/2);
 }
 
+void BinEditor::updateLines()
+{
+    updateLines(m_cursorPosition, m_cursorPosition);
+}
 
 void BinEditor::updateLines(int fromPosition, int toPosition)
 {
-    if (fromPosition < 0)
-        fromPosition = m_cursorPosition;
-    if (toPosition < 0)
-        toPosition = fromPosition;
     int topLine = verticalScrollBar()->value();
     int firstLine = qMin(fromPosition, toPosition) / 16;
     int lastLine = qMax(fromPosition, toPosition) / 16;
@@ -650,6 +650,7 @@ void BinEditor::paintEvent(QPaintEvent *e)
     const char *hex = "0123456789abcdef";
 
     painter.setPen(palette().text().color());
+    const QFontMetrics &fm = painter.fontMetrics();
     for (int i = 0; i <= m_numVisibleLines; ++i) {
         int line = topLine + i;
         if (line >= m_numLines)
@@ -715,18 +716,18 @@ void BinEditor::paintEvent(QPaintEvent *e)
                 if (foundPatternAt >= 0 && pos >= foundPatternAt && pos < foundPatternAt + matchLength) {
                     painter.fillRect(item_x, y-m_ascent, m_columnWidth, m_lineHeight, QColor(0xffef0b));
                     int printable_item_x = -xoffset + m_margin + m_labelWidth + 16 * m_columnWidth + m_charWidth
-                                           + painter.fontMetrics().width( printable.left(c));
+                                           + fm.width(printable.left(c));
                     painter.fillRect(printable_item_x, y-m_ascent,
-                                     painter.fontMetrics().width(printable.at(c)),
+                                     fm.width(printable.at(c)),
                                      m_lineHeight, QColor(0xffef0b));
                 }
 
                 if (selStart < selEnd && !isFullySelected && pos >= selStart && pos < selEnd) {
                     selectionRect |= QRect(item_x, y-m_ascent, m_columnWidth, m_lineHeight);
                     int printable_item_x = -xoffset + m_margin + m_labelWidth + 16 * m_columnWidth + m_charWidth
-                                           + painter.fontMetrics().width( printable.left(c));
+                                           + fm.width(printable.left(c));
                     printableSelectionRect |= QRect(printable_item_x, y-m_ascent,
-                                                    painter.fontMetrics().width(printable.at(c)),
+                                                    fm.width(printable.at(c)),
                                                     m_lineHeight);
                 }
             }
@@ -754,7 +755,7 @@ void BinEditor::paintEvent(QPaintEvent *e)
 
 
         if (cursor >= 0) {
-            int w = painter.fontMetrics().boundingRect(itemString.mid(cursor*3, 2)).width();
+            int w = fm.boundingRect(itemString.mid(cursor*3, 2)).width();
             QRect cursorRect(x + cursor * m_columnWidth, y - m_ascent, w + 1, m_lineHeight);
             painter.save();
             painter.setPen(Qt::red);
@@ -762,7 +763,7 @@ void BinEditor::paintEvent(QPaintEvent *e)
             painter.restore();
             if (m_hexCursor && m_cursorVisible) {
                 if (m_lowNibble)
-                    cursorRect.adjust(painter.fontMetrics().width(itemString.left(1)), 0, 0, 0);
+                    cursorRect.adjust(fm.width(itemString.left(1)), 0, 0, 0);
                 painter.fillRect(cursorRect, Qt::red);
                 painter.save();
                 painter.setClipRect(cursorRect);
@@ -776,7 +777,7 @@ void BinEditor::paintEvent(QPaintEvent *e)
 
         if (isFullySelected) {
                 painter.save();
-                painter.fillRect(text_x, y-m_ascent, painter.fontMetrics().width(printable), m_lineHeight,
+                painter.fillRect(text_x, y-m_ascent, fm.width(printable), m_lineHeight,
                                  palette().highlight());
                 painter.setPen(palette().highlightedText().color());
                 painter.drawText(text_x, y, printable);
@@ -794,9 +795,9 @@ void BinEditor::paintEvent(QPaintEvent *e)
         }
 
         if (cursor >= 0 && !printable.isEmpty()) {
-            QRect cursorRect(text_x + painter.fontMetrics().width(printable.left(cursor)),
+            QRect cursorRect(text_x + fm.width(printable.left(cursor)),
                              y-m_ascent,
-                             painter.fontMetrics().width(printable.at(cursor)),
+                             fm.width(printable.at(cursor)),
                              m_lineHeight);
             painter.save();
             if (m_hexCursor || !m_cursorVisible) {
diff --git a/src/plugins/bineditor/bineditor.h b/src/plugins/bineditor/bineditor.h
index 1c6bbaae033c41a0b4e11bfbb2337764b14676d8..0b9184b7c4c4618273f09e55f414fbec33b90cdf 100644
--- a/src/plugins/bineditor/bineditor.h
+++ b/src/plugins/bineditor/bineditor.h
@@ -187,7 +187,8 @@ private:
     int posAt(const QPoint &pos) const;
     bool inTextArea(const QPoint &pos) const;
     QRect cursorRect() const;
-    void updateLines(int fromPosition = -1, int toPosition = -1);
+    void updateLines();
+    void updateLines(int fromPosition, int toPosition);
     void ensureCursorVisible();
     void setBlinkingCursorEnabled(bool enable);