let mut to_surface = |r, g, b, a| {
let tr = a * r + 0x80;
let tg = a * g + 0x80;
let tb = a * b + 0x80;
surface[i + 0] = (((tb >> 8) + tb) >> 8) as u8;
surface[i + 1] = (((tg >> 8) + tg) >> 8) as u8;
surface[i + 2] = (((tr >> 8) + tr) >> 8) as u8;
surface[i + 3] = a as u8;
i += SURFACE_CHANNELS;
};