Quick answer: Pygame.display.Info() returning the previous monitor's resolution after the user moves the window? Info() caches at init - reinit display or check pygame.event for DISPLAY_CHANGED.

Move window from 1080p monitor to 1440p. Game still renders at 1080p.

Reinit on display change

pygame.event WINDOWDISPLAYCHANGED. Reinit display with the new size.

Poll periodically

Each frame, check current display vs cached. Fixed if drifted.

Or use Wayland-aware backend

Newer pygame versions on Linux handle this more cleanly.

“Display info is cached. Caches need refresh.”

If your game runs windowed and supports multi-monitor, display-change handling is mandatory. Plan for it.

Related reading