I think this is by design. Maximize maximizes the client area to the current monitor resolution. Because the window is larger than the client area, the extra border is visible on a second monitor. This won't happen when you make the window borderless on maximizing, or when you have a single monitor system. Otherwise, resize the window in the on_maximize event so that the window size itself, and not the client area, gets the monitor resolution.