1Index: cairo/src/cairo-win32-surface.c
2===================================================================
3--- cairo/src/cairo-win32-surface.c	(revision 14498)
4+++ cairo/src/cairo-win32-surface.c	(working copy)
5@@ -824,8 +824,13 @@
6      * to figure out when we can use GDI.  We don't have that checking
7      * anywhere at the moment, so just bail and use the fallback
8      * paths. */
9-    if (surface->format != CAIRO_FORMAT_RGB24)
10-	return CAIRO_INT_STATUS_UNSUPPORTED;
11+    //if (surface->format != CAIRO_FORMAT_RGB24)
12+    //	return CAIRO_INT_STATUS_UNSUPPORTED;
13+    // FIXME: We'll go ahead and optimize this now and just assume we're ok if
14+    // the color has no alpha.  Probably need to check various composite operators to
15+    // get this exactly right.
16+    if (color->alpha != 1.0)
17+        return CAIRO_INT_STATUS_UNSUPPORTED;
18 
19     /* Optimize for no destination alpha (surface->pixman_image is non-NULL for all
20      * surfaces with alpha.)
21@@ -1016,8 +1021,9 @@
22 
23     /* We can only handle operator SOURCE or OVER with the destination
24      * having no alpha */
25-    if ((op != CAIRO_OPERATOR_SOURCE && op != CAIRO_OPERATOR_OVER) || 
26-	(dst->format != CAIRO_FORMAT_RGB24))
27+    if ((op != CAIRO_OPERATOR_SOURCE && op != CAIRO_OPERATOR_OVER))
28+        // FIXME: It's not clear why ExtTextOut can't be called when the
29+        // destination has alpha.  Remove the RGB24 restriction. || (dst->format != CAIRO_FORMAT_RGB24))
30 	return CAIRO_INT_STATUS_UNSUPPORTED;
31 
32     /* If we have a fallback mask clip set on the dst, we have
33