922 - fill starts off as right color before transition

Massive refactor of animator as well as some edge case fixing
Also a precommit for #918

Close #922.
maybe just `() => 0` for simplicity?