diff --git a/inc/utils.h b/inc/utils.h
index 98b51fc..fdb6b7f 100644
--- a/inc/utils.h
+++ b/inc/utils.h
@@ -5,6 +5,7 @@
 #include <windows.h>
 
 
+BOOL util_is_minimized(HWND hwnd);
 BOOL util_is_avx_supported();
 void util_limit_game_ticks();
 void util_update_bnet_pos(int newX, int newY);
diff --git a/src/dd.c b/src/dd.c
index 797c48b..66519e0 100644
--- a/src/dd.c
+++ b/src/dd.c
@@ -861,7 +861,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
             x = y = 0;
         }
 
-        if (IsIconic(g_ddraw->hwnd))
+        if (util_is_minimized(g_ddraw->hwnd))
             real_ShowWindow(g_ddraw->hwnd, SW_RESTORE);
 
         RECT dst = { x, y, g_ddraw->render.width + x, g_ddraw->render.height + y };
@@ -930,7 +930,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
         {
             if (g_ddraw->nonexclusive)
             {
-                if (IsIconic(g_ddraw->hwnd))
+                if (util_is_minimized(g_ddraw->hwnd))
                     real_ShowWindow(g_ddraw->hwnd, SW_RESTORE);
 
                 real_SetWindowPos(
@@ -972,7 +972,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
                 real_GetWindowLongA(g_ddraw->hwnd, GWL_STYLE) | WS_MINIMIZEBOX);
         }
 
-        if (IsIconic(g_ddraw->hwnd))
+        if (util_is_minimized(g_ddraw->hwnd))
             real_ShowWindow(g_ddraw->hwnd, SW_RESTORE);
 
         real_SetWindowPos(
diff --git a/src/debug.c b/src/debug.c
index 8ac493d..a840939 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -206,7 +206,7 @@ int dbg_printf(const char* fmt, ...)
 
 void dbg_print_rect(char* info, LPRECT rect)
 {
-#ifdef _DEBUG_X
+#ifdef _DEBUG
     if (rect)
     {
         TRACE(
diff --git a/src/mouse.c b/src/mouse.c
index 1a805da..4cbed30 100644
--- a/src/mouse.c
+++ b/src/mouse.c
@@ -3,6 +3,7 @@
 #include "winapi_hooks.h"
 #include "dd.h"
 #include "hook.h"
+#include "utils.h"
 
 
 BOOL g_mouse_locked;
@@ -14,7 +15,7 @@ void mouse_lock()
     if (g_ddraw->devmode || g_ddraw->bnet_active || !g_ddraw->hwnd)
         return;
 
-    if (g_hook_active && !g_mouse_locked && !IsIconic(g_ddraw->hwnd))
+    if (g_hook_active && !g_mouse_locked && !util_is_minimized(g_ddraw->hwnd))
     {
         int game_count = InterlockedExchangeAdd((LONG*)&g_ddraw->show_cursor_count, 0);
         int cur_count = real_ShowCursor(TRUE) - 1;
diff --git a/src/utils.c b/src/utils.c
index 2282c26..ec231d4 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -11,6 +11,13 @@
 #include "config.h"
 
 
+BOOL util_is_minimized(HWND hwnd)
+{
+    RECT rc = { 0 };
+
+    return IsIconic(hwnd) || (real_GetClientRect(hwnd, &rc) && (rc.right - rc.left == 0 || rc.bottom - rc.top == 0));
+}
+
 BOOL util_is_avx_supported()
 {
     const DWORD XMM_STATE_BIT = 1 << 1;
diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c
index ea0f5cf..9925179 100644
--- a/src/winapi_hooks.c
+++ b/src/winapi_hooks.c
@@ -170,7 +170,7 @@ BOOL WINAPI fake_ClipCursor(const RECT* lpRect)
 
         CopyRect(&g_ddraw->mouse.rc, &dst_rc);
 
-        if (g_mouse_locked && !IsIconic(g_ddraw->hwnd))
+        if (g_mouse_locked && !util_is_minimized(g_ddraw->hwnd))
         {
             real_MapWindowPoints(g_ddraw->hwnd, HWND_DESKTOP, (LPPOINT)&dst_rc, 2);
 
diff --git a/src/wndproc.c b/src/wndproc.c
index 122baa5..9b524f2 100644
--- a/src/wndproc.c
+++ b/src/wndproc.c
@@ -137,7 +137,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
     }
     case WM_D3D9DEVICELOST:
     {
-        if (((!g_ddraw->windowed && !g_ddraw->nonexclusive) || !IsIconic(g_ddraw->hwnd)) &&
+        if (((!g_ddraw->windowed && !g_ddraw->nonexclusive) || !util_is_minimized(g_ddraw->hwnd)) &&
             g_ddraw->renderer == d3d9_render_main &&
             d3d9_on_device_lost())
         {
@@ -531,7 +531,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
                 {
                     if (g_ddraw->renderer == d3d9_render_main) /* Needed for Windows 7 */
                         real_ShowWindow(g_ddraw->hwnd, SW_RESTORE);
-
+ 
                     ChangeDisplaySettings(&g_ddraw->render.mode, CDS_FULLSCREEN);
                     real_ShowWindow(g_ddraw->hwnd, SW_RESTORE);
                     mouse_lock();