diff --git a/src/printing/printpainter.cpp b/src/printing/printpainter.cpp --- a/src/printing/printpainter.cpp +++ b/src/printing/printpainter.cpp @@ -659,12 +659,19 @@ QRegion region(0, 0, pl.maxWidth, rangeptr->viewLineCount() * m_fontHeight); if (line == pl.firstline) { - region = region.subtracted(QRegion(0, 0, m_renderer->cursorToX(rangeptr->viewLine(0), pl.selectionRange.start()), m_fontHeight)); + for (int i = 0; i < rangeptr->viewLineCount(); ++i) { + int _x = m_renderer->cursorToX(rangeptr->viewLine(i), pl.selectionRange.start()); + if (_x > 0) { + region = region.subtracted(QRegion(0, i * m_fontHeight, _x, m_fontHeight)); + } + } } if (line == pl.lastline) { - int _x = m_renderer->cursorToX(rangeptr->viewLine(rangeptr->viewLineCount() - 1), pl.selectionRange.end()); - region = region.subtracted(QRegion(_x, 0, pl.maxWidth - _x, m_fontHeight)); + for (int i = 0; i < rangeptr->viewLineCount(); ++i) { + int _x = m_renderer->cursorToX(rangeptr->viewLine(i), pl.selectionRange.end()); + region = region.subtracted(QRegion(_x, i * m_fontHeight, pl.maxWidth - _x, m_fontHeight)); + } } painter.setClipRegion(region);