Form.Show does not seem to bother looking at whatever is present in the FormStartPosition. If you use ShowDialog instead that would position it correctly.
I've used the Form.SetDesktopLocation() method in the FormLoad event to place the form where I want it to get around these problems