diff --git a/sway/config/output.c b/sway/config/output.c
index c41670d55..a96007fbd 100644
--- a/sway/config/output.c
+++ b/sway/config/output.c
@@ -5,9 +5,11 @@
 #include <sys/socket.h>
 #include <sys/wait.h>
 #include <unistd.h>
+#include <wlr/types/wlr_cursor.h>
 #include <wlr/types/wlr_output_layout.h>
 #include <wlr/types/wlr_output.h>
 #include "sway/config.h"
+#include "sway/input/cursor.h"
 #include "sway/output.h"
 #include "sway/tree/root.h"
 #include "log.h"
@@ -455,6 +457,12 @@ void apply_output_config_to_outputs(struct output_config *oc) {
 			}
 		}
 	}
+
+	struct sway_seat *seat;
+	wl_list_for_each(seat, &server.input->seats, link) {
+		wlr_seat_pointer_clear_focus(seat->wlr_seat);
+		cursor_rebase(seat->cursor);
+	}
 }
 
 void reset_outputs(void) {