diff --git a/Source/Editor/Editor.cs b/Source/Editor/Editor.cs index 8d42ddea1..ee9251a69 100644 --- a/Source/Editor/Editor.cs +++ b/Source/Editor/Editor.cs @@ -1514,7 +1514,8 @@ namespace FlaxEditor var win = Windows.GameWin?.Root; if (win?.RootWindow is WindowRootControl root) { - pos = Float2.Round(Windows.GameWin.Viewport.PointFromScreen(pos) * root.DpiScale); + pos = Windows.GameWin.Viewport.PointFromScreen(pos); + pos = Float2.Round(pos); } else { @@ -1527,7 +1528,8 @@ namespace FlaxEditor var win = Windows.GameWin?.Root; if (win?.RootWindow is WindowRootControl root) { - pos = Float2.Round(Windows.GameWin.Viewport.PointToScreen(pos / root.DpiScale)); + pos = Windows.GameWin.Viewport.PointToScreen(pos); + pos = Float2.Round(pos); } else { @@ -1559,6 +1561,7 @@ namespace FlaxEditor else result = gameWin.Viewport.Size; + result *= root.DpiScale; result = Float2.Round(result); } } diff --git a/Source/Engine/Engine/Screen.cpp b/Source/Engine/Engine/Screen.cpp index ae644ad61..5c3e9670d 100644 --- a/Source/Engine/Engine/Screen.cpp +++ b/Source/Engine/Engine/Screen.cpp @@ -74,7 +74,7 @@ Float2 Screen::ScreenToGameViewport(const Float2& screenPos) return Editor::Managed->ScreenToGameViewport(screenPos); #else auto win = Engine::MainWindow; - return win ? win->ScreenToClient(screenPos) : Float2::Minimum; + return win ? win->ScreenToClient(screenPos) / win->GetDpiScale() : Float2::Minimum; #endif } @@ -84,7 +84,7 @@ Float2 Screen::GameViewportToScreen(const Float2& viewportPos) return Editor::Managed->GameViewportToScreen(viewportPos); #else auto win = Engine::MainWindow; - return win ? win->ClientToScreen(viewportPos) : Float2::Minimum; + return win ? win->ClientToScreen(viewportPos * win->GetDpiScale()) : Float2::Minimum; #endif }