I think it's faster to create a TBitmap, and copy your data into it (using scanline), and draw the bitmap onto the paintbox by calling (Canvas.Draw(X, Y, *Bitmap Here*), if i recall correctly).

I'm sure you can find plenty examples using TBitmap's scanline functionality. Check google and the delphi help.

Good luck!