This seems hackish. I wonder why I wasn't just saving the matrix at the top of beginHUD() and restoring that, rather than restoring the "original matrix". Was I stupid, or is there a good reason?