diff --git a/exa/exa.c b/exa/exa.c
index d12344f..ba82382 100644
--- a/exa/exa.c
+++ b/exa/exa.c
@@ -59,7 +59,11 @@ exaGetPixmapOffset(PixmapPtr pPix)
     ExaScreenPriv(pPix->drawable.pScreen);
     ExaPixmapPriv(pPix);
 
-    return (CARD8 *) pExaPixmap->fb_ptr - pExaScr->info->memoryBase;
+    /* added in as a fix for 6912996 */
+    if (exaPixmapHasGpuCopy(pPix) && pExaPixmap->fb_ptr)
+        return (CARD8 *) pExaPixmap->fb_ptr - pExaScr->info->memoryBase;
+    else
+        return (CARD8 *) pExaPixmap->sys_ptr - pExaScr->info->memoryBase;
 }
 
 void *