To reproduce this you need at least one secondary monitor. 1. emacs -Q 2. Move the frame to the secondary monitor 3. M-: (modify-frame-parameters nil '((left . .5) (top . .5))) frame is moved to the main monitor 4. Move the frame to secondary monitor again 5. M-: (modify-frame-parameters nil '((width . .5) (height . .5))) frame size is half of the main monitor instead of the secondary one In my case the 'display-monitor-attributes-list' function returns these attributes: (((geometry 0 0 1440 900) (workarea 0 25 1440 875) ...) ((geometry -254 900 1920 1080) (workarea -254 900 1920 1055) ...)) Attached patch make the frame position and size ratios calculations related to the monitor on which the frame is.