diff --git a/user/tigervnc/APKBUILD b/user/tigervnc/APKBUILD
index eaf1750053aa64ca66e1980d679df275a394589e..9b88fe1831615630dd47e8cb3601f3971d476896 100644
--- a/user/tigervnc/APKBUILD
+++ b/user/tigervnc/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: A. Wilcox <awilfox@adelielinux.org>
 pkgname=tigervnc
 pkgver=1.9.0
-pkgrel=0
+pkgrel=1
 pkgdesc="High-performance, platform-neutral VNC remote desktop application"
 url="http://tigervnc.org/"
 arch="all"
@@ -15,6 +15,7 @@ makedepends="cmake fltk-dev fontconfig-dev gnutls-dev intltool
 subpackages="$pkgname-lang $pkgname-doc"
 source="tigervnc-$pkgver.tar.gz::https://github.com/TigerVNC/tigervnc/archive/v$pkgver.tar.gz
 	use-intltool.patch
+	endian.patch
 	"
 
 build() {
@@ -40,4 +41,5 @@ package() {
 }
 
 sha512sums="333910f567e6b5e4a5a22d898b2d4c3f4b834cb4cc8fc13ff55d31401894c0d5122a127692ec5eb51e412c945ff3ea5b8146f9ab22cbe1e47541e09239ec8c9d  tigervnc-1.9.0.tar.gz
-5c1cee98b7ba41c7cf121480fdfe16d5ef17c9562ff2ba3ea4e74235161fc63e2e3ed63e788c0aa999610b660b394c1269d6fdcc9716c5563651fd67d723f619  use-intltool.patch"
+5c1cee98b7ba41c7cf121480fdfe16d5ef17c9562ff2ba3ea4e74235161fc63e2e3ed63e788c0aa999610b660b394c1269d6fdcc9716c5563651fd67d723f619  use-intltool.patch
+189a51a542b368e4db22174d09f5b656848e94577bbf93b2388f54529f1c7c2d32e5b5283551b3fb067ba21f6464f60989e22d4cd11ed3d87d5c931301555b49  endian.patch"
diff --git a/user/tigervnc/endian.patch b/user/tigervnc/endian.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e09edf9c56d0e36db9ab854f897d0b903e5c5d87
--- /dev/null
+++ b/user/tigervnc/endian.patch
@@ -0,0 +1,51 @@
+diff --git a/vncviewer/Surface_X11.cxx b/vncviewer/Surface_X11.cxx
+index 3523da3d..6562634d 100644
+--- a/vncviewer/Surface_X11.cxx
++++ b/vncviewer/Surface_X11.cxx
+@@ -109,6 +109,7 @@ void Surface::blend(Surface* dst, int src_x, int src_y, int x, int y, int w, int
+ 
+ void Surface::alloc()
+ {
++  XRenderPictFormat templ;
+   XRenderPictFormat* format;
+ 
+   // Might not be open at this point
+@@ -117,7 +118,37 @@ void Surface::alloc()
+   pixmap = XCreatePixmap(fl_display, XDefaultRootWindow(fl_display),
+                          width(), height(), 32);
+ 
+-  format = XRenderFindStandardFormat(fl_display, PictStandardARGB32);
++  // Our code assumes a BGRA byte order, regardless of what the endian
++  // of the machine is or the native byte order of XImage, so make sure
++  // we find such a format
++  templ.type = PictTypeDirect;
++  templ.depth = 32;
++#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
++  templ.direct.alpha = 0;
++  templ.direct.red   = 8;
++  templ.direct.green = 16;
++  templ.direct.blue  = 24;
++#else
++  templ.direct.alpha = 24;
++  templ.direct.red   = 16;
++  templ.direct.green = 8;
++  templ.direct.blue  = 0;
++#endif
++  templ.direct.alphaMask = 0xff;
++  templ.direct.redMask = 0xff;
++  templ.direct.greenMask = 0xff;
++  templ.direct.blueMask = 0xff;
++
++  format = XRenderFindFormat(fl_display, PictFormatType | PictFormatDepth |
++                             PictFormatRed | PictFormatRedMask |
++                             PictFormatGreen | PictFormatGreenMask |
++                             PictFormatBlue | PictFormatBlueMask |
++                             PictFormatAlpha | PictFormatAlphaMask,
++                             &templ, 0);
++
++  if (!format)
++    throw rdr::Exception("XRenderFindFormat");
++
+   picture = XRenderCreatePicture(fl_display, pixmap, format, 0, NULL);
+ 
+   visFormat = XRenderFindVisualFormat(fl_display, fl_visual->visual);