If you fix it by adjusting the positions on your monitor, then your monitor isn't a multisync monitor, and there's very little you can do at the software level to fix it.
Newer monitors remember the different settings for different resolutions/refresh rates. Older monitors don't remember it, so when you change to a new resolution/refresh, the picture gets a little off kilter. Short of changing your X so that it runs at the same resolution/refresh as your console, there really isn't anything you can do to fix the problem at a software level.
Are you using a VGA console? If so, what resolution is it? The refresh is most likely 60Hz, which gives me a headache (I run at 85Hz), and you can change your X server to serve up the same resolution at 60Hz, which *should* help with the problem, but the real solution is to buy a multisync monitor that remembers the position at different resolution/refresh rates. Also, don't turn the monitor off (perhaps by power bar?), because some lower-end monitors will remember the position, but only if they're left in standby mode.