for(int i = 0; i < bottomPixels.length; i++) { float t_a = (float)((topPixels[i] >> 24) & 0xff) / 255, t_r = (float)((topPixels[i] >> 16) & 0xff) / 255, t_g = (float)((topPixels[i] >> 8) & 0xff) / 255, t_b = (float)(topPixels[i] & 0xff) / 255; float b_a = (float)((bottomPixels[i] >> 24) & 0xff), b_r = (float)((bottomPixels[i] >> 16) & 0xff) / 255, b_g = (float)((bottomPixels[i] >> 8) & 0xff) / 255, b_b = (float)(bottomPixels[i] & 0xff) / 255; destPixels[i] = (255 << 24 | /* (int)((t_r * t_a) + ((b_r * b_a) * (((255 - t_a) / 255)))) << 16 | (int)((t_g * t_a) + ((b_g * b_a) * (((255 - t_a) / 255)))) << 8 | (int)((t_b * t_a) + ((b_b * b_a) * (((255 - t_a) / 255)))) << 0 */ ((int)(255 * ((t_r * t_a) + ((b_r * b_a) * (1 - t_a))))) << 16 | ((int)(255 * ((t_g * t_a) + ((b_g * b_a) * (1 - t_a))))) << 8 | ((int)(255 * ((t_b * t_a) + ((b_b * b_a) * (1 - t_a))))) << 0 ); }