diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c
index d4634467d64749e37b0fd9fb38772ef6b8df1292..52c5050573767964ae6b706fd0b722979dd991be 100644
--- a/hw/xwayland/xwayland-output.c
+++ b/hw/xwayland/xwayland-output.c
@@ -216,6 +216,8 @@ update_screen_size(struct xwl_output *xwl_output, int width, int height)
     }
 
     update_desktop_dimensions();
+
+    RRTellChanged(xwl_screen->screen);
 }
 
 struct xwl_emulated_mode *
@@ -674,6 +676,7 @@ xwl_output_create(struct xwl_screen *xwl_screen, uint32_t id)
     RRCrtcGammaSetSize(xwl_output->randr_crtc, 256);
     RROutputSetCrtcs(xwl_output->randr_output, &xwl_output->randr_crtc, 1);
     RROutputSetConnection(xwl_output->randr_output, RR_Connected);
+    RRTellChanged(xwl_screen->screen);
 
     /* We want the output to be in the list as soon as created so we can
      * use it when binding to the xdg-output protocol...
@@ -717,6 +720,7 @@ xwl_output_remove(struct xwl_output *xwl_output)
 
     RRCrtcDestroy(xwl_output->randr_crtc);
     RROutputDestroy(xwl_output->randr_output);
+    RRTellChanged(xwl_screen->screen);
 
     xwl_output_destroy(xwl_output);
 }