Eu encontrei a resposta na documentação do Xlib em "Color strings". Parece que o Xlib realmente usa valores RGB de 16 bits para cores:
RGB Device String Specification
[...] an older syntax for RGB Device is supported, but its continued use is not encouraged. The syntax is an initial sharp sign character followed by a numeric specification, in one of the following formats:
#RGB (4 bits each) #RRGGBB (8 bits each) #RRRGGGBBB (12 bits each) #RRRRGGGGBBBB (16 bits each)
The R, G, and B represent single hexadecimal digits. When fewer than 16 bits each are specified, they represent the most significant bits of the value (unlike the “rgb:” syntax, in which values are scaled). For example, the string “
#3a7
” is the same as “#3000a0007000
”.