@Casmat You can call the timer with framerates with 1000/fps.
If you have longer animations and find them stuttery (because the UI timer isn't accurate), you can be calculating timing differences between frames and compensating in the alpha increase. This should only be noticeable on very slow machines, for which you should have an option to disable animation anyway (although 4 timer ticks is nothing).
Then, there are the easings and the standard finterpTo interpolation that you can add.
The rabbit hole is very deep with animation.