diff --git a/src/protocols/Screencopy.cpp b/src/protocols/Screencopy.cpp
index 074220238..a697abc9c 100644
--- a/src/protocols/Screencopy.cpp
+++ b/src/protocols/Screencopy.cpp
@@ -379,6 +379,7 @@ bool CScreencopyProtocolManager::copyFrameShm(SScreencopyFrame* frame, timespec*
     const auto PFORMAT = get_gles2_format_from_drm(format);
     if (!PFORMAT) {
         Debug::log(ERR, "[screencopy] Cannot read pixels, unsupported format %x", PFORMAT);
+        wlr_output_rollback(PMONITOR->output);
         pixman_region32_fini(&fakeDamage);
         wlr_buffer_end_data_ptr_access(frame->buffer);
         return false;