The code in XSolidBrush's Color attribute reads;
this.color = value;
this.gdiDirty = this.gdiDirty || this.color != value;
Since the test follows the assignment it will never be true. In other words, once the brush has been realized, assignments to Color will not update it.
The assignment should be moved after the tests (i.e. to the end of the Color setter)