From 9366beda68db19be981c34a0220c504e906fbac5 Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 12 Feb 2026 21:08:40 +0100 Subject: [PATCH] Qt Software Renderer: Apply DPI scaling to processed screenshots, fixes #6807. --- src/qt/qt_softwarerenderer.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/qt/qt_softwarerenderer.cpp b/src/qt/qt_softwarerenderer.cpp index d9e217ed3..854d53433 100644 --- a/src/qt/qt_softwarerenderer.cpp +++ b/src/qt/qt_softwarerenderer.cpp @@ -21,6 +21,8 @@ #include #include #include +#include +#include "qt_util.hpp" extern "C" { #include <86box/86box.h> @@ -114,16 +116,30 @@ SoftwareRenderer::onBlit(int buf_idx, int x, int y, int w, int h) plat_tempfile(fn, NULL, (char *) ".png"); strcat(path, fn); + qreal win_scale = util::screenOfWidget(this)->devicePixelRatio(); + QSize qs = RendererCommon::parentWidget->size(); QPixmap pixmap(RendererCommon::parentWidget->size()); RendererCommon::parentWidget->render(&pixmap); - QImage image = pixmap.toImage(); + QImage image; + if (win_scale == 1.0) + image = pixmap.toImage(); + else + image = pixmap.toImage().scaled(qs * win_scale, Qt::IgnoreAspectRatio, + Qt::SmoothTransformation); image.save(path, "png"); monitors[r_monitor_index].mon_screenshots--; } if (monitors[r_monitor_index].mon_screenshots_clipboard) { + qreal win_scale = util::screenOfWidget(this)->devicePixelRatio(); + QSize qs = RendererCommon::parentWidget->size(); QPixmap pixmap(RendererCommon::parentWidget->size()); RendererCommon::parentWidget->render(&pixmap); - QImage image = pixmap.toImage(); + QImage image; + if (win_scale == 1.0) + image = pixmap.toImage(); + else + image = pixmap.toImage().scaled(qs * win_scale, Qt::IgnoreAspectRatio, + Qt::SmoothTransformation); QClipboard *clipboard = QApplication::clipboard(); clipboard->setImage(image, QClipboard::Clipboard); monitors[r_monitor_index].mon_screenshots_clipboard--;