that's pretty cool actually! Thanks for the image Joe. I suspect the problem is the bit shifting I used, as it's almost right. In the code first it gets the short/word and masks the correct bits, then if its green Shr 5, red Shr 10 so all the values are 0 to 31, 5 bits. Now to get 0 to 255 I did Shl 3 which must be the problem. Instead I think you need to multiply by 8.2 to get a constant range (31*8.2=254). I have updated the above code for this, so see if that works better now.
Edit: you could also try just multiply by 8 which would give values 0 to 248. Shouldn't make much difference.
Edit: you could also try just multiply by 8 which would give values 0 to 248. Shouldn't make much difference.