RichEdit - setting tab stops

I need to set tab stops in RichEdit so that text written in Courier font
will be properly aligned, regardless I use spaces or tabulators.
i.e. these two strings should look identically:
  RichEdit.Lines.Append('abc     def     ghi');
  RichEdit.Lines.Append('abc'#9'def'#9'ghi');

The problem is how to compute tab positions in pixels.

Because Canvas has method TextWidth,
and because RichEdit does not have Canvas,
I used temporary PaintBox this way:

  pb := TPaintBox.Create(RichEdit);
  pb.Parent := RichEdit;
  pb.Canvas.Font.Asign(RichEdit.DefAttributes);
  tab_width := pb.Canvas.TextWidth('12345678');

But the tab_width is too large.
On the other hand, when I use:

  tab_width := pb.Canvas.TextWidth('123456');

the size is exactly what I need, but I do not understand WHY ?
Why should I specify only 6 characters to obtain width of 8 characters
shown in RichEdit ?

--
Ivan
preno...@ms.anet.cz