diff --git a/src/win32_monitor.c b/src/win32_monitor.c
index 4f5af36a..c8bae359 100644
--- a/src/win32_monitor.c
+++ b/src/win32_monitor.c
@@ -185,6 +185,8 @@ void _glfwPollMonitorsWin32(void)
                            display.DeviceName) == 0)
                 {
                     disconnected[i] = NULL;
+                    // handle may have changed, update
+                    EnumDisplayMonitors(NULL, NULL, monitorCallback, (LPARAM) _glfw.monitors[i]);
                     break;
                 }
             }