Термин background
заставляет меня задуматься, он связан с манипулированием изображениями / пикселями. В этом контексте каждый пиксель содержит три компонента: красный, зеленый и синий. Если каждый компонент имеет ширину в один байт (значения от 0 до 255), то 32-разрядное целое число может содержать все три компонента. И «принять среднее» должно быть сделано для каждого компонента отдельно , так как вы не хотите, чтобы «зеленый» канал влиял на «синий» канал.
Давайте предположим, что представление 0x00rrggbb.
src: 0x00660000 -> 0x00, 0x66, 0x00, 0x00
bac: 0x00000002 -> 0x00, 0x00, 0x00, 0x02
adding components: 0x00, 0x66, 0x00, 0x0x
dividing comp : 0x00, 0x33, 0x00, 0x01
exp: OK OK OK OK
Сделайте то же самое с 0x0300, 0x0600, и вы увидите, что деление «зеленый» повлияет на «синий», если не будет правильно округлено. Математика по компонентам решила это.