From 036171d7cadf26aea29c52ce249aee49c2bb289a Mon Sep 17 00:00:00 2001 From: Bubio Date: Sun, 27 Mar 2022 22:46:34 +0900 Subject: [PATCH] Fixed issue #4217 DPI Scale is now included in the calculation. --- Source/utils/display.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Source/utils/display.h b/Source/utils/display.h index 7ccc46a8d..1f372b277 100644 --- a/Source/utils/display.h +++ b/Source/utils/display.h @@ -58,10 +58,13 @@ void OutputToLogical(T *x, T *y) #ifndef USE_SDL1 if (!renderer) return; + float scaleX; SDL_RenderGetScale(renderer, &scaleX, NULL); - *x = static_cast(*x / scaleX); - *y = static_cast(*y / scaleX); + float scaleDpi = GetDpiScalingFactor(); + float scale = scaleX / scaleDpi; + *x = static_cast(*x / scale); + *y = static_cast(*y / scale); SDL_Rect view; SDL_RenderGetViewport(renderer, &view); @@ -91,8 +94,10 @@ void LogicalToOutput(T *x, T *y) float scaleX; SDL_RenderGetScale(renderer, &scaleX, NULL); - *x = static_cast(*x * scaleX); - *y = static_cast(*y * scaleX); + float scaleDpi = GetDpiScalingFactor(); + float scale = scaleX / scaleDpi; + *x = static_cast(*x * scale); + *y = static_cast(*y * scale); #else if (!OutputRequiresScaling()) return;