diff --git a/src/citron/main.cpp b/src/citron/main.cpp index 7ce45a2a8..a5513248e 100644 --- a/src/citron/main.cpp +++ b/src/citron/main.cpp @@ -84,6 +84,7 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual #include #include #include +#include #include #include #include @@ -6221,17 +6222,16 @@ int main(int argc, char* argv[]) { !qgetenv("STEAM_DECK").isEmpty(); if (is_gamescope) { - // Force the environment to ignore the Deck's high-density screen - qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "0"); - qputenv("QT_ENABLE_HIGHDPI_SCALING", "0"); + // 1. Force the scale factor to exactly 1.0 qputenv("QT_SCALE_FACTOR", "1"); + qputenv("QT_SCREEN_SCALE_FACTORS", "1"); + qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "0"); qputenv("QT_FONT_DPI", "96"); - // Force Qt to use a 1:1 pixel ratio - // These MUST be set before the QApplication app(...) line - QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling); - QCoreApplication::setAttribute(Qt::AA_Use96Dpi); + // 2. This must be called BEFORE the QApplication object is created + QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::Floor); + // 3. Ensure windowing system plays nice with Gamescope QCoreApplication::setAttribute(Qt::AA_DontUseNativeMenuBar); QCoreApplication::setAttribute(Qt::AA_DontUseNativeDialogs); qputenv("QT_WAYLAND_SHELL_INTEGRATION", "xdg-shell");