diff --git a/plugins/platforms/x11/windowed/egl_x11_backend.cpp b/plugins/platforms/x11/windowed/egl_x11_backend.cpp --- a/plugins/platforms/x11/windowed/egl_x11_backend.cpp +++ b/plugins/platforms/x11/windowed/egl_x11_backend.cpp @@ -106,7 +106,9 @@ const QSize &overall = screens()->size(); const QRect &v = screens()->geometry(screenId); // TODO: are the values correct? - glViewport(-v.x(), v.height() - overall.height() - v.y(), overall.width(), overall.height()); + + qreal scale = screens()->scale(screenId); + glViewport(-v.x(), v.height() - overall.height() - v.y(), overall.width() * scale, overall.height() * scale); } void EglX11Backend::endRenderingFrameForScreen(int screenId, const QRegion &renderedRegion, const QRegion &damagedRegion) diff --git a/plugins/platforms/x11/windowed/x11windowed_backend.cpp b/plugins/platforms/x11/windowed/x11windowed_backend.cpp --- a/plugins/platforms/x11/windowed/x11windowed_backend.cpp +++ b/plugins/platforms/x11/windowed/x11windowed_backend.cpp @@ -471,7 +471,7 @@ { QVector ret; for (auto it = m_windows.constBegin(); it != m_windows.constEnd(); ++it) { - ret << QRect((*it).internalPosition, (*it).size); + ret << QRect((*it).internalPosition, (*it).size / (*it).scale); } return ret; }