Backcolor NumericUpDown não funciona como esperado

Eu recentemente tive a necessidade de escrever uma versão do controle Windows NumericUpDown que poderia destacar se um valor era obrigatório. Ele precisava fazer isso alterando a cor de fundo do controle. Achei que isso seria bastante simples, mas ao tentar fazê-lo, descobri que tem um efeito colateral estranho de não ter conseguido todo o controle.

Usando o código abaixo, estou vendo isso:

Quando eu solto um controle em um formulário do Windows e altero a propriedade BackColor(ou seja, para azul), toda a parte numérica do controle muda de cor. Se, alternativamente, eu alterar minha propriedade "IsMandatory", não todas as alterações de cor de volta(deixa uma borda). Então, se eu alterar o BackColor para azul e, em seguida, defina IsMandatory como True, recebo um controle LightBlue(a cor obrigatória) com uma borda azul.

Não consigo ver por que isso deveria acontecer, já que ambos usam o mesmo código.

Ideias ou explicações recebidas com grande satisfação.

   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);
      }
   }

questionAnswers(3)

yourAnswerToTheQuestion