procedure px(x,y,red,green,blue,alpha: integer);
var s_red,s_green,s_blue,s_alpha,t_red,t_green,t_blue,t_alpha: integer;
var t1,t2,t3: real;
begin
s_red := ord(scrr[x,y]);
s_green := ord(scrg[x,y]);
s_blue := ord(scrb[x,y]);
s_alpha := ord(scra[x,y]);
t1 := s_alpha * alpha;
t_alpha := alpha + s_alpha - trunc(t1 / 255);
t1 := 255 - alpha;
t2 := red * alpha;
t3 := s_red * s_alpha * t1;
t_red := trunc(t2 / 255 + (t3 / 255) / 255);
t2 := green * alpha;
t3 := s_green * s_alpha * t1;
t_green := trunc(t2 / 255 + (t3 / 255) / 255);
t2 := blue * alpha;
t3 := s_blue * s_alpha * t1;
t_blue := trunc(t2 / 255 + (t3 / 255) / 255);
scrr[x,y] := chr(t_red);
scrg[x,y] := chr(t_green);
scrb[x,y] := chr(t_blue);
scra[x,y] := chr(t_alpha);
end;