diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 6e09072..364ae46 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -159,6 +159,8 @@ static void surface_download_data(IWineD
             HeapFree(GetProcessHeap(), 0, mem);
         }
     }
+    /* Surface has now been downloaded */
+    This->Flags |= SFLAG_INSYSMEM;
 }
 
 static void surface_upload_data(IWineD3DSurfaceImpl *This, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *data) {
@@ -876,9 +878,6 @@ static HRESULT WINAPI IWineD3DSurfaceImp
             surface_download_data(This);
             LEAVE_GL();
         }
-
-        /* The local copy is now up to date to the opengl one because a full download was done */
-        This->Flags |= SFLAG_INSYSMEM;
     }
 
 lock_end:
