Fix calculation of conversion test target values

Bit shifting gives an approximate, but not properly accurate value
when upconverting. Do a proper calculation.
diff --git a/tests/conv.cxx b/tests/conv.cxx
index 840f18d..3901b9d 100644
--- a/tests/conv.cxx
+++ b/tests/conv.cxx
@@ -72,9 +72,9 @@
   g = (p >> dstpf.greenShift) & dstpf.greenMax;
   b = (p >> dstpf.blueShift) & dstpf.blueMax;
 
-  r <<= 8 - dstpf.redBits;
-  g <<= 8 - dstpf.greenBits;
-  b <<= 8 - dstpf.blueBits;
+  r = (r * 255 + dstpf.redMax/2) / dstpf.redMax;
+  g = (g * 255 + dstpf.greenMax/2) / dstpf.greenMax;
+  b = (b * 255 + dstpf.blueMax/2) / dstpf.blueMax;
 
   // The allowed error depends on:
   //