When I start my PC, the elementary login screen shows up on my secondary monitor, but when I sign in and get to the desktop, everything display-wise is correctly set up (dock and menu bar on primary monitor). How do I fix this?
I was able to fix this by setting the correct primary monitor via LightDM.
LightDM is elementaryOS's lock screen (aka pantheon-greeter)
First you need to find the name for your primary monitor using the command
xrandr. It will be something similar to "HDMI1" or "DVI-0".
Once you have the correct monitor name you will need to edit the file
/etc/lightdm/lightdm.conf. In that file you will need to add the following line:
display-setup-script=xrandr --output HDMI-0 --primary
Make sure the HDMI-0 in the line above is your own monitor name.
It is an old bug. It has been reported here: https://bugs.launchpad.net/elementaryos/+bug/1355561
I didn't find a workaround for this yet.
There is also a bounty open for this issue, here: https://www.bountysource.com/issues/3733137-login-screen-is-the-resolution-of-the-primary-monitor-on-all-monitors