From 15830162f5fc44fe00a2125332967b779918bbad Mon Sep 17 00:00:00 2001 From: Eirik Aavitsland Date: Fri, 1 Jul 2022 18:23:08 +0200 Subject: [PATCH] Fix printing of dpr>1 images on Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The win32 printing paint engine copies tiles of the source image into temporary target images for printing. It does that using QPainter painting. If there is a difference in DPR between source and target, the painting will be scaled, leading to distorted results. Fixes: QTBUG-99990 Change-Id: Ie7368655ef3abeece49fb1a6421e2d6ea7ed5e95 Reviewed-by: André de la Rocha (cherry picked from commit 9e453dacc3855bafd3d7b692d76699c3bf07b9c6) Reviewed-by: Qt Cherry-pick Bot --- src/printsupport/platform/windows/qprintengine_win.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/printsupport/platform/windows/qprintengine_win.cpp b/src/printsupport/platform/windows/qprintengine_win.cpp index d6dd5eae5ca..cd3e03d88e3 100644 --- a/src/printsupport/platform/windows/qprintengine_win.cpp +++ b/src/printsupport/platform/windows/qprintengine_win.cpp @@ -563,6 +563,7 @@ void QWin32PrintEngine::drawPixmap(const QRectF &targetRect, QImage img(QSize(imgw, imgh), QImage::Format_RGB32); img.fill(Qt::white); QPainter painter(&img); + img.setDevicePixelRatio(pixmap.devicePixelRatio()); painter.drawPixmap(0,0, pixmap, tileSize * x, tileSize * y, imgw, imgh); QPixmap p = QPixmap::fromImage(img);