adjhdisplay,
                                               crtc_state->mode.hdisplay);
        vc4_pstate->crtc_x += left;
-       if (vc4_pstate->crtc_x > crtc_state->mode.hdisplay - left)
-               vc4_pstate->crtc_x = crtc_state->mode.hdisplay - left;
+       if (vc4_pstate->crtc_x > crtc_state->mode.hdisplay - right)
+               vc4_pstate->crtc_x = crtc_state->mode.hdisplay - right;
 
        adjvdisplay = crtc_state->mode.vdisplay - (top + bottom);
        vc4_pstate->crtc_y = DIV_ROUND_CLOSEST(vc4_pstate->crtc_y *
                                               adjvdisplay,
                                               crtc_state->mode.vdisplay);
        vc4_pstate->crtc_y += top;
-       if (vc4_pstate->crtc_y > crtc_state->mode.vdisplay - top)
-               vc4_pstate->crtc_y = crtc_state->mode.vdisplay - top;
+       if (vc4_pstate->crtc_y > crtc_state->mode.vdisplay - bottom)
+               vc4_pstate->crtc_y = crtc_state->mode.vdisplay - bottom;
 
        vc4_pstate->crtc_w = DIV_ROUND_CLOSEST(vc4_pstate->crtc_w *
                                               adjhdisplay,