NumericUpDown backcolor no funciona como se esperaba

Hace poco tuve la necesidad de escribir una versión del control NumericUpDown de Windows que pudiera resaltar si un valor era obligatorio. Necesitaba hacer esto cambiando el color de fondo del control. Pensé que esto sería lo suficientemente simple, pero al tratar de hacerlo, me parece que tiene un extraño efecto secundario de no dibujar todo el control.

Usando el código de abajo, estoy viendo esto:

Cuando suelto un control en un formulario de Windows y cambio la propiedad BackColor(es decir, a azul), toda la parte del número del control cambia de color. Si, alternativamente, cambio mi propiedad "IsMandatory", no todos los cambios de color de fondo(deja un borde). Por lo tanto, si cambio el BackColor a azul y luego configuro IsMandatory en True, obtengo un control LightBlue(el color obligatorio) con un borde azul.

No puedo ver por qué debería ser así, ya que ambos usan el mismo código.

Ideas o explicaciones muy bien recibidas.

   public partial class MyNumericUpDown : NumericUpDown
   {
      private Boolean _isMandatory = false;
      private Color _mandatoryBackColor = Color.LightBlue;
      private Color _backColor = Color.FromKnownColor(KnownColor.Window);

      [DefaultValue(typeof(Color), "Window"), Description("Overridden property")]
      override public Color BackColor
      {
         get { return _backColor; }
         set
         {
            _backColor = value;
            MyResetColors();
         }
      }

      [DefaultValue(typeof(Color), "LightBlue"), Category("Appearance")]
      public Color MandatoryBackColor
      {
         get {return _mandatoryBackColor;}
         set 
         {
            _mandatoryBackColor = value;
            MyResetColors();
         }
      }

      [DefaultValue(false), Category("Behavior")]
      public Boolean IsMandatory
      {
         get { return _isMandatory; }
         set
         {
            _isMandatory = value;
            MyResetColors();
         }
      }

      private void MyResetColors()
      {
         base.BackColor = (this.IsMandatory ? this.MandatoryBackColor : this.BackColor);
      }
   }

Respuestas a la pregunta(3)

Su respuesta a la pregunta