Fix PictureMatchVisual(). format->direct.{red,green,blue}Mask are CARD16. Therefore, we need to cast them to, e.g., unsigned long, before shifting and comparing with pVisual->{red,green,blue}Mask, that are unsigned long. Index: xsrc/external/mit/xorg-server/dist/render/picture.c =================================================================== RCS file: /home/netbsd/xsrc/external/mit/xorg-server/dist/render/picture.c,v retrieving revision 1.1.1.7 diff -p -u -r1.1.1.7 picture.c --- xsrc/external/mit/xorg-server/dist/render/picture.c 31 Dec 2018 09:36:09 -0000 1.1.1.7 +++ xsrc/external/mit/xorg-server/dist/render/picture.c 28 May 2021 08:03:01 -0000 @@ -527,12 +527,12 @@ PictureMatchVisual(ScreenPtr pScreen, in return format; } else { - if (format->direct.redMask << format->direct.red == - pVisual->redMask && - format->direct.greenMask << format->direct.green == - pVisual->greenMask && - format->direct.blueMask << format->direct.blue == - pVisual->blueMask) { + if ((unsigned long)format->direct.redMask << + format->direct.red == pVisual->redMask && + (unsigned long)format->direct.greenMask << + format->direct.green == pVisual->greenMask && + (unsigned long)format->direct.blueMask << + format->direct.blue == pVisual->blueMask) { return format; } } Index: xsrc/external/mit/xorg-server.old/dist/render/picture.c =================================================================== RCS file: /home/netbsd/xsrc/external/mit/xorg-server.old/dist/render/picture.c,v retrieving revision 1.1.1.1 diff -p -u -r1.1.1.1 picture.c --- xsrc/external/mit/xorg-server.old/dist/render/picture.c 9 Jun 2016 09:08:01 -0000 1.1.1.1 +++ xsrc/external/mit/xorg-server.old/dist/render/picture.c 28 May 2021 09:28:55 -0000 @@ -553,12 +553,12 @@ PictureMatchVisual (ScreenPtr pScreen, i } else { - if (format->direct.redMask << format->direct.red == - pVisual->redMask && - format->direct.greenMask << format->direct.green == - pVisual->greenMask && - format->direct.blueMask << format->direct.blue == - pVisual->blueMask) + if ((unsigned long)format->direct.redMask << + format->direct.red == pVisual->redMask && + (unsigned long)format->direct.greenMask << + format->direct.green == pVisual->greenMask && + (unsigned long)format->direct.blueMask << + format->direct.blue == pVisual->blueMask) { return format; }