Thanks to Mike, I knew this was likely something to do with our JP2 library; I'm now pretty sure I've traced it back to a hard-coded frombuffer() setting--"L", for grayscale--in the NativeImaging module that Chronam uses to optimize image generation/broker image libraries. I'm wary of the consequences of changing that, and will be investigating further.