diff options
Diffstat (limited to 'src/quick/items/qquickrectangle.cpp')
-rw-r--r-- | src/quick/items/qquickrectangle.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/quick/items/qquickrectangle.cpp b/src/quick/items/qquickrectangle.cpp index ce570a743c..52c830c14a 100644 --- a/src/quick/items/qquickrectangle.cpp +++ b/src/quick/items/qquickrectangle.cpp @@ -578,8 +578,13 @@ QSGNode *QQuickRectangle::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData if (d->pen && d->pen->isValid()) { rectangle->setPenColor(d->pen->color()); - rectangle->setPenWidth(d->pen->width()); - rectangle->setAligned(d->pen->pixelAligned()); + qreal penWidth = d->pen->width(); + if (d->pen->pixelAligned()) { + qreal dpr = window() ? window()->effectiveDevicePixelRatio() : 1.0; + penWidth = qRound(penWidth * dpr) / dpr; // Ensures integer width after dpr scaling + } + rectangle->setPenWidth(penWidth); + rectangle->setAligned(false); // width rounding already done, so the Node should not do it } else { rectangle->setPenWidth(0); } |