From 2911984f24439949d96ff03c1436f3eccabc5c8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20M=C3=A4=C3=A4tt=C3=A4?= Date: Thu, 20 Oct 2022 14:03:25 +0300 Subject: Fix projection matrix to correct viewport size When device pixel ratio is not 1.0, the projection matrix can be incorrect because it uses floating point values when calculating it, which can have fractional values. Fix calculating projection matrix by rounding the logical pixel size after dpr division. We don't render to fractional pixels so the parameters to setProjectionMatrixToRect can't be fractional either. Fixes white lines at the edges of the window. Fixes: QTBUG-95225 Change-Id: I85039ead5f31fb251c6cf760aa0b55b4b2a9e29d Reviewed-by: Laszlo Agocs (cherry picked from commit 530f21c69e17db7f9210a033106edde5a7769af8) Reviewed-by: Qt Cherry-pick Bot --- src/quick/items/qquickwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index 77d2827536..66ab8158a6 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -652,7 +652,7 @@ void QQuickWindowPrivate::renderSceneGraph(const QSize &size, const QSize &surfa pixelSize = size * devicePixelRatio; else pixelSize = surfaceSize; - QSizeF logicalSize = QSizeF(pixelSize) / devicePixelRatio; + QSize logicalSize = pixelSize / devicePixelRatio; renderer->setDevicePixelRatio(devicePixelRatio); renderer->setDeviceRect(QRect(QPoint(0, 0), pixelSize)); -- cgit v1.2.3