The problem is that you assign one of the system colors. In this case (probably) vbButtonFace which has a value of &H8000000F. Which isn't actually grey.
To change this behaviour add the following declaration to the class
VB Code:
  1. Private Declare Function GetSysColor _
  2.  Lib "user32" ( _
  3.  ByVal nIndex As Long) As Long
Now change the Property Let Color procedure into the following
VB Code:
  1. Public Property Let Color(ByVal nNew As Long)
  2.     Dim sHex As String
  3.     m_Color = nNew
  4.     If m_Color < 0 Then
  5.         ' A system color. Convert it to correct color
  6.         sHex = Right$(Hex(m_Color), 4)
  7.         m_Color = CLng("&H" & sHex)
  8.         m_Color = GetSysColor(m_Color)
  9.     End If
  10. End Property
You should now get the correct color.

Thank you so much for pointing this out.