--- src/cairo-xlib-private.h.orig	2019-01-16 13:08:39.931858291 -0500
+++ src/cairo-xlib-private.h	2019-01-16 20:32:16.662831125 -0500
@@ -222,7 +222,8 @@
 _cairo_xlib_vendor_is_xorg (Display *dpy)
 {
     const char *const vendor = ServerVendor (dpy);
-    return strstr (vendor, "X.Org") || strstr (vendor, "Xorg");
+    return strstr (vendor, "X.Org") || strstr (vendor, "Xorg")
+	   || strstr (vendor, "Sun Microsystems");
 }
 
 cairo_private cairo_status_t
--- src/cairo-xlib-display.c.orig	2014-11-12 13:37:36.000000000 -0500
+++ src/cairo-xlib-display.c	2019-01-18 15:00:25.342675157 -0500
@@ -287,6 +287,11 @@
      *    VendorRelease==10400000 for the 1.4.0 X server within the
      *    X.Org 7.3 release.
      *
+     *    2a. The Vendor=="Sun Microsystems" released an X server for
+     *    their line of SunRay terminal servers called Xnewt. It is
+     *    based on Xorg server 1.3 (per Xnewt(8)). It suffers the same
+     *    bugs as the mainline code base.
+     *
      * The bugs:
      *
      *    1. The original bug that led to the buggy_repeat
@@ -327,8 +332,10 @@
 	    /* And the extended repeat modes were not fixed until much later */
 	    display->buggy_pad_reflect = TRUE;
 	} else {
-	    if (VendorRelease (dpy) < 10400000)
+	    if (VendorRelease (dpy) < 10400000) {
 		display->buggy_repeat = TRUE;
+		display->buggy_gradients = TRUE;
+	    }
 
 	    /* Too many bugs in the early drivers */
 	    if (VendorRelease (dpy) < 10699000)
