Unfortunately, I am not able to reproduce this issue. Would be helpful to know which framework you're using (I tried .Net6 and it works in my code)
I suggest that you try one of the following:
- set the brushes to static resources like "Red", "Green" and "Blue" (instead of DynamicResource) and see if this works. It might be a resource binding problem.
- change "IsPressed" to "ButtonBase.IsPressed"
- As a rule of thumb, I usually do not make any assumptions about the sequence of trigger events. In your control template, both IsMouseOver and IsPressed influence the Background brush property of "Border". You might try to add a second border to your grid right on top of the previous one, with a Background property set to either {x:null} or "Transparent" by default. Then use the "IsPressed" trigger to change the background of this second border.