diff --git a/xc/programs/Xserver/vnc/Imakefile b/xc/programs/Xserver/vnc/Imakefile
index 7e61870..1c8132d 100644
--- a/xc/programs/Xserver/vnc/Imakefile
+++ b/xc/programs/Xserver/vnc/Imakefile
@@ -18,7 +18,7 @@
          SRCS = vncExtInit.cc vncHooks.cc XserverDesktop.cc
          OBJS = vncExtInit.o vncHooks.o XserverDesktop.o
      INCLUDES = -I../include -I$(EXTINCSRC) -I$(XINCLUDESRC) -I$(FONTINCSRC) \
-                -I../mfb -I../mi $(VNCINCLUDE)
+                -I../render $(VNCINCLUDE)
 #if defined(XFree86Version) && XFree86Version >= 4000
    VNCDEFINES = -DGC_HAS_COMPOSITE_CLIP
 #endif
diff --git a/xc/programs/Xserver/vnc/module/Imakefile b/xc/programs/Xserver/vnc/module/Imakefile
index 6011781..7b31743 100644
--- a/xc/programs/Xserver/vnc/module/Imakefile
+++ b/xc/programs/Xserver/vnc/module/Imakefile
@@ -12,7 +12,7 @@
     OBJS = vncExtInit.o vncHooks.o xf86vncModule.o XserverDesktop.o
 INCLUDES = -I.. -I../../include -I$(EXTINCSRC) -I$(XINCLUDESRC) \
            -I$(FONTINCSRC) -I$(XF86COMSRC) \
-           $(VNCINCLUDE)
+           -I../../render $(VNCINCLUDE)
  DEFINES = $(STD_DEFINES) -DGC_HAS_COMPOSITE_CLIP -DXFree86LOADER
 
 LinkSourceFile(vncExtInit.cc,..)
diff --git a/xc/programs/Xserver/vnc/vncHooks.cc b/xc/programs/Xserver/vnc/vncHooks.cc
index d52a497..1321bf3 100644
--- a/xc/programs/Xserver/vnc/vncHooks.cc
+++ b/xc/programs/Xserver/vnc/vncHooks.cc
@@ -29,6 +29,9 @@
 #include "regionstr.h"
 #include "dixfontstr.h"
 #include "colormapst.h"
+#ifdef RENDER
+#include "picturestr.h"
+#endif
 
 #ifdef GC_HAS_COMPOSITE_CLIP
 #define COMPOSITE_CLIP(gc) ((gc)->pCompositeClip)
@@ -74,6 +77,9 @@
   StoreColorsProcPtr           StoreColors;
   DisplayCursorProcPtr         DisplayCursor;
   ScreenBlockHandlerProcPtr    BlockHandler;
+#ifdef RENDER
+  CompositeProcPtr             Composite;
+#endif
 } vncHooksScreenRec, *vncHooksScreenPtr;
 
 typedef struct {
@@ -104,6 +110,11 @@
 static Bool vncHooksDisplayCursor(ScreenPtr pScreen, CursorPtr cursor);
 static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout,
                                  pointer pReadmask);
+#ifdef RENDER
+static void vncHooksComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, 
+			      PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask, 
+			      INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height);
+#endif
 
 // GC "funcs"
 
@@ -229,6 +240,13 @@
   vncHooksScreen->StoreColors = pScreen->StoreColors;
   vncHooksScreen->DisplayCursor = pScreen->DisplayCursor;
   vncHooksScreen->BlockHandler = pScreen->BlockHandler;
+#ifdef RENDER
+  PictureScreenPtr ps;
+  ps = GetPictureScreenIfSet(pScreen);
+  if (ps) {
+    vncHooksScreen->Composite = ps->Composite;
+  }
+#endif
 
   pScreen->CloseScreen = vncHooksCloseScreen;
   pScreen->CreateGC = vncHooksCreateGC;
@@ -241,6 +259,11 @@
   pScreen->StoreColors = vncHooksStoreColors;
   pScreen->DisplayCursor = vncHooksDisplayCursor;
   pScreen->BlockHandler = vncHooksBlockHandler;
+#ifdef RENDER
+  if (ps) {
+    ps->Composite = vncHooksComposite;
+  }
+#endif
 
   return TRUE;
 }
@@ -470,6 +493,33 @@
   SCREEN_REWRAP(BlockHandler);
 }
 
+// Composite - needed for RENDER
+
+#ifdef RENDER
+void vncHooksComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, 
+		       PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask, 
+		       INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)
+{
+  ScreenPtr pScreen = pDst->pDrawable->pScreen;
+  vncHooksScreenPtr vncHooksScreen = ((vncHooksScreenPtr)pScreen->devPrivates[vncHooksScreenIndex].ptr); 
+  BoxRec box;
+  PictureScreenPtr ps = GetPictureScreen(pScreen);
+
+  box.x1 = pDst->pDrawable->x + xDst;
+  box.y1 = pDst->pDrawable->y + yDst;
+  box.x2 = box.x1 + width;
+  box.y2 = box.y1 + height;
+
+  RegionHelper changed(pScreen, &box, 0);
+  vncHooksScreen->desktop->add_changed(changed.reg);
+
+  ps->Composite = vncHooksScreen->Composite;
+  (*ps->Composite)(op, pSrc, pMask, pDst, xSrc, ySrc,
+		   xMask, yMask, xDst, yDst, width, height);
+  ps->Composite = vncHooksComposite;
+}
+
+#endif /* RENDER */
 
 
 /////////////////////////////////////////////////////////////////////////////
