problem with TCanvas

In a TCustomControl, I do:

procedure DrawChar;
for i := 1 to 16 do
   for j := 1 to 8 do
 if GetFontBit(FFont,ord(c),j,i) // Get 1 bit (pixel) in a font (not a
                                 // Windows font, it's a font with
                                 // characters like the font in DOS
                                 // text mode)
    Canvas.Pixels[i+left,j+top] := color else
    Canvas.Pixels[i+left,j+top] := background;

But this is VERY slow. (This was the bug in my last message, it was so slow I
                        thought it crashed :) )
How could I optimize it?

Maybe I could use a buffer (array[1..8,1..16]) of pixel, and then copy that
buffer to the TCanvas, but how would I do that?

-Christos Karras---------------<>-
UNNAMED LAW: If it happens, it must be possible.