The order in which the screens are returned is not defined anywhere I can see: you need to check the
Screen.Primary Property (System.Windows.Forms)[
^] rather than rely on the first in the colection:
primaryDisplay = Screen.AllScreens.FirstOrDefault(s => s.Primary);
extendedDisplay = Screen.AllScreens.FirstOrDefault(s => !s.Primary) ?? primaryDisplay;
StartPosition = FormStartPosition.Manual;
Location = extendedDisplay.Bounds.Location;
Show();