diff --git a/src/backends/drm/drm_egl_layer_surface.cpp b/src/backends/drm/drm_egl_layer_surface.cpp index e10b75519a..b7c84a2054 100644 --- a/src/backends/drm/drm_egl_layer_surface.cpp +++ b/src/backends/drm/drm_egl_layer_surface.cpp @@ -193,7 +193,7 @@ bool EglGbmLayerSurface::endRendering(const QRegion &damagedRegion, OutputFrame m_surface->shadowDamageJournal.add(damagedRegion); QRegion repaint; for (const QRect &rect : logicalRepaint) { - repaint |= scaledRect(rect, m_surface->scale).toAlignedRect(); + repaint |= scaledRect(rect, m_surface->scale).toAlignedRect() & QRect(QPoint(), m_surface->gbmSwapchain->size()); } GLFramebuffer *fbo = m_surface->currentSlot->framebuffer(); @@ -609,7 +609,7 @@ std::shared_ptr EglGbmLayerSurface::importWithEgl(Surface *surfa for (const QRect &logical : damagedRegion) { deviceDamage |= scaledRect(logical, surface->scale).toAlignedRect(); } - const QRegion repaint = deviceDamage | surface->importDamageJournal.accumulate(slot->age(), infiniteRegion()); + const QRegion repaint = (deviceDamage | surface->importDamageJournal.accumulate(slot->age(), infiniteRegion())) & QRect(QPoint(), m_surface->gbmSwapchain->size()); surface->importDamageJournal.add(deviceDamage); GLFramebuffer *fbo = slot->framebuffer();