TLabel has an AutoSize flag, setting which makes an automatic adjustment of the size of the control to the size of the text.
Now let's take a look: when changing the font property ( Font.Color ), it calls the Changed method which signals the owner that a change has occurred, and with such a signal about changing the font and having the AutoSize flag, the size of the control is recalculated, which resets the width to you.
Whether this behavior is correct is not quite. In theory, changing parameters that do not affect the size of the text (such as color) should not cause a recalculation of the size. And resizing the control with the AutoSize flag set should be ignored.
The solution - if you set the width yourself - set the flag Label2.AutoSize := false