If you have a monitor that is misbehaving, like I do, then this article is for you. Lenovo ThinkVision L2250p Wide I have at my workplace doesn't report resolutions it supports, so I have to manually add resolution it supports via xrandr.
Most useful resource on Internets is, as usual, Arch Wiki.
I know that my monitor supports resolution of 1680x1050 with 60Hz refresh rate, so to calculate modeline I just used cvt command and then loaded new mode. Worked like a charm.
cvt 1680 1050 60
xrandr --newmode "1680x105060.00" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
xrandr --addmode VGA1 1680x105060.00
To make changes permanent create .xprofile file and add any xrandr command that you would usually manually write.
Ubuntu has really nice wiki page that explains all different methods for setting display resolution.