Fix bitmap scaling

Bug introduced in 810f0a42e50b32d17c478f0bdf73b1b34d315ad0.
The uint8 cast were also acting as masks for each of the pixel
components, moving them out of the multiplications made things go wrong.

Use rgb_color instead of messing with bitshifts and masks for better
readbility (the colors are out of order, but the processing is the same
on each color so the end result is valid).