states correctly update when scales change