bugfix: height was being dirtied before we used it. now have a separate dirty flag.