diff --git a/protocols/rdp/src/rdp_gdi.c b/protocols/rdp/src/rdp_gdi.c
index 4d4a5b4..5672d44 100644
--- a/protocols/rdp/src/rdp_gdi.c
+++ b/protocols/rdp/src/rdp_gdi.c
@@ -158,9 +158,6 @@
     /* Layer for actual transfer */
     guac_layer* buffer;
 
-    /* Transfer function (if necessary) */
-    guac_transfer_function transfer;
-
     /*
      * Warn that rendering is a fallback, as the server should not be sending
      * this order.
@@ -186,7 +183,7 @@
         case 0xAA:
             break;
 
-        /* If operation is just SRC, send background only */
+        /* If operation is just a copy, send foreground only */
         case 0xCC:
         case 0xF0:
             guac_protocol_send_rect(client->socket, current_layer,
@@ -195,9 +192,9 @@
 
             guac_protocol_send_cfill(client->socket,
                     GUAC_COMP_OVER, current_layer,
-                    (patblt->backColor >> 16) & 0xFF,
-                    (patblt->backColor >> 8 ) & 0xFF,
-                    (patblt->backColor      ) & 0xFF,
+                    (patblt->foreColor >> 16) & 0xFF,
+                    (patblt->foreColor >> 8 ) & 0xFF,
+                    (patblt->foreColor      ) & 0xFF,
                     0xFF);
             break;
 
@@ -212,40 +209,19 @@
                     0xFF, 0xFF, 0xFF, 0xFF);
             break;
 
-        /* Otherwise, use transfer */
+        /* Otherwise, invert entire rect */
         default:
 
             /* Allocate buffer for transfer */
             buffer = guac_client_alloc_buffer(client);
 
-            /* Get reasonable transfer function for ROP */
-            switch (patblt->bRop) {
-
-                /* PATINVERT */
-                case 0x5A:
-                    transfer = GUAC_TRANSFER_BINARY_XOR;
-                    break;
-
-                /* PATPAINT */
-                case 0xFB:
-                    transfer = GUAC_TRANSFER_BINARY_OR;
-                    break;
-
-                default: 
-                    transfer = guac_rdp_rop3_transfer_function(
-                                   client, patblt->bRop);
-            }
-
             /* Send rectangle stroke */
             guac_protocol_send_rect(client->socket, buffer,
                     0, 0, patblt->nWidth, patblt->nHeight);
 
-            /* Fill rectangle with back color only */
+            /* Fill rectangle with fore color only */
             guac_protocol_send_cfill(client->socket, GUAC_COMP_OVER, buffer,
-                    (patblt->backColor >> 16) & 0xFF,
-                    (patblt->backColor >> 8 ) & 0xFF,
-                    (patblt->backColor      ) & 0xFF,
-                    0xFF);
+                    0xFF, 0xFF, 0xFF, 0xFF);
 
             /* Transfer */
             guac_protocol_send_transfer(client->socket,
@@ -253,8 +229,8 @@
                     /* ... from buffer */
                     buffer, 0, 0, patblt->nWidth, patblt->nHeight,
 
-                    /* ... using specified transfer function */
-                    transfer,
+                    /* ... inverting */
+                    GUAC_TRANSFER_BINARY_XOR,
 
                     /* ... to current layer */
                     current_layer, patblt->nLeftRect, patblt->nTopRect);
