This had me stumped for a while and I conclude that this is a bug because as soon as you add a background colour the text displays as you would wish.
I have a solution for you. It uses a gradient brush derived from the Professional Colors class to draw a rectangle in the background of the bitmap before drawing the text.
Dim mnuItem = TestToolStripMenuItem
Dim numPeople = CInt(Math.Ceiling(Rnd() * 20))
Dim qImg = New Bitmap(mnuItem.Height, mnuItem.Height)
Using gr = Graphics.FromImage(qImg)
Dim sz = gr.MeasureString(numPeople, mnuItem.Font)
Dim w = CInt(Math.Ceiling(sz.Width))
Dim h = CInt(Math.Ceiling(sz.Height))
Dim linGrBrush As New LinearGradientBrush( _
New Point(0, 0), _
New Point(qImg.Width, 0), _
ProfessionalColors.ToolStripGradientBegin, _
ProfessionalColors.ToolStripGradientEnd)
gr.FillRectangle(linGrBrush, New Rectangle(0, 0, qImg.Width, qImg.Height))
gr.DrawString(numPeople, mnuItem.Font, Brushes.Black, New Point((qImg.Width / 2) - (w / 2), (qImg.Height / 2) - (h / 2)))
End Using
mnuItem.Image = qImg
You will need the Imports System.Drawing.Drawing2D
line at the top of the class