Window size restoration doesn't handle multiple monitors properly
The main window checks the stored size against the primary monitor:
Gdk.Monitor? monitor = display.get_primary_monitor();
if (monitor == null) {
monitor = display.get_monitor_at_point(1, 1);
}
if (monitor != null &&
this.window_width <= monitor.geometry.width &&
this.window_height <= monitor.geometry.height)
When the primary monitor is smaller than the last window size (which was on a larger secondary monitor), the size isn't restored because of this check.