Ok, I have found the problem. Apparently Microsoft has a bug in their e.Graphics.MeasureString function. To remidy this re-organize the primary if block like this:
If Asc(smallArray(0, x).Chars(0)) < 30 Then ' make sure to dispose of odd char's in the array
' See if any characters will fit.
ElseIf characters_fitted > 0 And xmin < (e.MarginBounds.Right - 5) Then
Notice that I switched the if and elseif lines, that is because I was occasionally printing out a graphical representation for the char(0).