Each window in the screenshot was obtained with: - ./src/emacs -Q -rv, - C-h C-a (for some reason the splash screen wasn't displayed at startup) - C-x 2, moving to the *scratch* buffer, and displaying - system-configuration-options, - system-configuration-features, - emacs-repository-version. I could reproduce this on OpenSUSE Tumbleweed, Debian stretch and Xubuntu 16.04. I looked at the SVG section in src/image.c, in particular at any USE_CAIRO section; I stumbled on this bit: > if (iconptr[3] == 0) > *dataptr = bgcolor; > else > *dataptr = (iconptr[0] << 16) > | (iconptr[1] << 8) > | iconptr[2] > | (iconptr[3] << 24); Looking at create_cairo_image_surface, I saw that we use CAIRO_FORMAT_ARGB32, which according to the documentation works with "premultiplied alpha" values. Quoting : > CAIRO_FORMAT_ARGB32 each pixel is a 32-bit quantity, with alpha > in the upper 8 bits, then red, then green, > then blue. The 32-bit quantities are stored > native-endian. Pre-multiplied alpha is > used. (That is, 50% transparent red is > 0x80800000, not 0x80ff0000.) (Since 1.0) AFAICU, this means that Cairo expects the RGB values to be scaled down according to the alpha value. Having no idea whether this was the issue (I had no idea whether gdk-pixbuf gave us premultiplied alpha or not), I added that multiplication and AFAICT, this does solve the issue (see other screenshot).