diff --git a/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs b/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs index b575db6cdd..97d1144c42 100644 --- a/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs +++ b/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs @@ -1628,7 +1628,7 @@ namespace Avalonia.Win32.Interop public static extern IntPtr MonitorFromPoint(POINT pt, MONITOR dwFlags); [DllImport("user32.dll")] - public static extern IntPtr MonitorFromRect(RECT rect, MONITOR dwFlags); + public static extern IntPtr MonitorFromRect(RECT* rect, MONITOR dwFlags); [DllImport("user32.dll")] public static extern IntPtr MonitorFromWindow(IntPtr hwnd, MONITOR dwFlags); diff --git a/src/Windows/Avalonia.Win32/ScreenImpl.cs b/src/Windows/Avalonia.Win32/ScreenImpl.cs index cb9c420c00..0f73d39249 100644 --- a/src/Windows/Avalonia.Win32/ScreenImpl.cs +++ b/src/Windows/Avalonia.Win32/ScreenImpl.cs @@ -70,13 +70,14 @@ internal unsafe class ScreenImpl : ScreensBase protected override Screen? ScreenFromRectCore(PixelRect rect) { - var monitor = MonitorFromRect(new RECT + var r = new RECT { - left = rect.TopLeft.X, - top = rect.TopLeft.Y, - right = rect.TopRight.X, - bottom = rect.BottomRight.Y - }, UnmanagedMethods.MONITOR.MONITOR_DEFAULTTONULL); + left = rect.X, + top = rect.Y, + right = rect.Right, + bottom = rect.Bottom + }; + var monitor = MonitorFromRect(&r, MONITOR.MONITOR_DEFAULTTONULL); return ScreenFromHMonitor(monitor); }