diff --git a/scene_opengl.cpp b/scene_opengl.cpp
index a501e567cf..1319fd61a9 100644
--- a/scene_opengl.cpp
+++ b/scene_opengl.cpp
@@ -89,7 +89,6 @@ GLXDrawable SceneOpenGL::glxbuffer = None;
 GLXDrawable SceneOpenGL::last_pixmap = None;
 bool SceneOpenGL::tfp_mode; // using glXBindTexImageEXT (texture_from_pixmap)
 bool SceneOpenGL::db; // destination drawable is double-buffered
-bool SceneOpenGL::copy_buffer_hack; // workaround for nvidia < 1.0-9xxx drivers
 bool SceneOpenGL::shm_mode;
 #ifdef HAVE_XSHM
 XShmSegmentInfo SceneOpenGL::shm;
@@ -214,9 +213,6 @@ bool SceneOpenGL::selectMode()
         }
     if( !initDrawableConfigs())
         return false;
-    // use copy buffer hack from glcompmgr (called COPY_BUFFER there) - nvidia drivers older than
-    // 1.0-9xxx don't update pixmaps properly, so do a copy first
-    copy_buffer_hack = !tfp_mode && !shm_mode; // TODO detect that it's nvidia < 1.0-9xxx driver
     return true;
     }
 
@@ -1062,7 +1058,7 @@ bool SceneOpenGL::Window::bindTexture()
     Client* c = dynamic_cast< Client* >( toplevel );
     bool alpha_clear = c != NULL && c->hasAlpha() && !c->noBorder();
     bool alpha_clear_copy = true;
-    bool copy_buffer = (( alpha_clear && alpha_clear_copy ) || copy_buffer_hack );
+    bool copy_buffer = ( alpha_clear && alpha_clear_copy );
     if( copy_buffer )
         {
         Pixmap p2 = XCreatePixmap( display(), pix, toplevel->width(), toplevel->height(), toplevel->depth());
diff --git a/scene_opengl.h b/scene_opengl.h
index 05f82ba8f4..c4c593e91a 100644
--- a/scene_opengl.h
+++ b/scene_opengl.h
@@ -75,7 +75,6 @@ class SceneOpenGL
         static GLXDrawable last_pixmap; // for a workaround in bindTexture()
         static bool tfp_mode;
         static bool shm_mode;
-        static bool copy_buffer_hack;
         QHash< Toplevel*, Window* > windows;
 #ifdef HAVE_XSHM
         static XShmSegmentInfo shm;