here is another procedure work with index instead of xy

Code:
procedure SetScanLineIndex32(indx:longword; c:cardinal; var image : Tbitmap);
begin
       Plongword(longword(image.scanline[indx div image.Height]) + indx mod image.Width * 4)^ := c;
end;