--- ./nx-X11/programs/Xserver/hw/nxagent/X/NXmitrap.c.X.original	2015-02-13 14:03:44.744441510 +0100
+++ ./nx-X11/programs/Xserver/hw/nxagent/X/NXmitrap.c	2015-02-10 19:13:13.820685287 +0100
@@ -1,3 +1,20 @@
+/**************************************************************************/
+/*                                                                        */
+/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/.         */
+/*                                                                        */
+/* NXAGENT, NX protocol compression and NX extensions to this software    */
+/* are copyright of NoMachine. Redistribution and use of the present      */
+/* software is allowed according to terms specified in the file LICENSE   */
+/* which comes in the source distribution.                                */
+/*                                                                        */
+/* Check http://www.nomachine.com/licensing.html for applicability.       */
+/*                                                                        */
+/* NX and NoMachine are trademarks of Medialogic S.p.A.                   */
+/*                                                                        */
+/* All rights reserved.                                                   */
+/*                                                                        */
+/**************************************************************************/
+
 /*
  * $XFree86: xc/programs/Xserver/render/mitrap.c,v 1.8 2002/09/03 19:28:28 keithp Exp $
  *
@@ -35,6 +52,12 @@
 #include "picturestr.h"
 #include "mipict.h"
 
+#ifdef NXAGENT_SERVER
+
+#include "Render.h"
+
+#endif
+
 PicturePtr
 miCreateAlphaPicture (ScreenPtr	    pScreen, 
 		      PicturePtr    pDst,
@@ -159,7 +182,27 @@
 	xDst = traps[0].left.p1.x >> 16;
 	yDst = traps[0].left.p1.y >> 16;
 
-	miTrapezoidBounds (ntrap, traps, &bounds);
+        #ifdef NXAGENT_SERVER
+
+        if (nxagentTrapezoidExtents != NullBox)
+        {
+          memcpy(&bounds, nxagentTrapezoidExtents, sizeof(BoxRec));
+        }
+        else
+        {
+          nxagentTrapezoidExtents = (BoxPtr) xalloc(sizeof(BoxRec));
+
+          miTrapezoidBounds (ntrap, traps, &bounds);
+
+          memcpy(nxagentTrapezoidExtents, &bounds, sizeof(BoxRec));
+        }
+
+        #else
+
+        miTrapezoidBounds (ntrap, traps, &bounds);
+
+        #endif
+
 	if (bounds.y1 >= bounds.y2 || bounds.x1 >= bounds.x2)
 	    return;
 	pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
