diff --git a/src/protocols/types/SurfaceState.cpp b/src/protocols/types/SurfaceState.cpp
index bb58b9ae3..b57fef811 100644
--- a/src/protocols/types/SurfaceState.cpp
+++ b/src/protocols/types/SurfaceState.cpp
@@ -61,6 +61,7 @@ void SSurfaceState::updateFrom(SSurfaceState& ref) {
     updated = ref.updated;
 
     if (ref.updated & SURFACE_UPDATED_BUFFER) {
+        ref.updated &= ~SURFACE_UPDATED_BUFFER;
         *this = ref;
         ref.damage.clear();
         ref.bufferDamage.clear();