Do you have the UseGDI set true? If so, turn it off to see if that takes care of this problem. If so, then in the derived grid you can conditionally ignore the UseGDI in OnDrawCellDisplayText. This way GDI would be used when the display is the screen and GDI+ would be used for printing.
protected override void OnDrawCellDisplayText(GridDrawCellDisplayTextEventArgs e)
{
base.OnDrawCellDisplayText (e);
if (!UseGDI || e.Cancel || PrintingMode)
return;
e.Cancel = GridGdiPaint.Instance.DrawText(e.Graphics, e.DisplayText, e.TextRectangle, e.Style);
}