diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index d950c4e45f342a1dec17c7ed2d97149c9d9ca699..cfb9d71f5c8ca54dfdc14111483bd40772eac868 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -293,6 +293,7 @@ bool QPainterPrivate::attachPainterPrivate(QPainter *q, QPaintDevice *pdev)
     // Update matrix.
     if (q->d_ptr->state->WxF) {
         q->d_ptr->state->redirectionMatrix = q->d_ptr->state->matrix;
+        q->d_ptr->state->redirectionMatrix *= q->d_ptr->hidpiScaleTransform().inverted();
         q->d_ptr->state->redirectionMatrix.translate(-offset.x(), -offset.y());
         q->d_ptr->state->worldMatrix = QTransform();
         q->d_ptr->state->WxF = false;