About the multiplication by 3, to do this, simply remove the "div 3", and then when checking the value, use the values multiplied by 3. So if it was 128, then it becomes 128*3.
About dithering, I always thought it was too complicated for me. However now that I read the Floyd-Steinberg dithering page on wikipedia, it seems to be rather simple. Well, when I have got some time, I might implement dithering in BGRABitmap.