VCL compiler options & TOutline component buggy

I'm having trouble succesfully running the VCL with range checking and
overflow options turned on.

My program makes extensive use of TOutline components, and these seem
to be the root of the problem.  (Next two paragraphs give details and
can be ignored).

- With Overflow checking ($Q) turned on, I get an immediate runtime
- overflow error in outline.pas in function
- TCustomOutline.GetNodeDisplayWidth(Node: TOutlineNode): Integer on
- the line beginning osText.

- With overflow checking off, but Range checking ($R) turned on, I get
- a different sort of problem.  When I use the ChangeLevelBy method, I
- get a range checking run-time error.  It has got as far down as
- TCustomOutline.SetLevel, but one of the variables (CurLevel) seems
- to be corrupted, as it has a garbage value, which cannot be the
- fault of my call.

Is it too much to expect the VCL to run with simple checking options
on?  (It wouldn't compile at all with type-safe pointers turned on...)
What compiler options does the VCL expect, and are these documented
anywhere?

The reason I'm worrying about all this is because my program is
getting semi-random GPFs/Pointer runtime errors, which I think are
connected to the TOutline component.  OK, they could be my fault, but
given how buggy I've found the TOutline component to be in the past, I
don't think they are.

Has anyone else had similar problems?

Thanks,

Francis Irving
Vega Group PLC.