(cherry picked from commit 079827d)
(cherry picked from commit 5985115)
(cherry picked from commit 2b6d991)
(cherry picked from commit e12e095)
Also tidies up hyperdash state logic
Also fixes catcher size being relative to aspect ratio.