Changed the StateMachine from std::stack<GameState*> to a single GameState*, which has a pointer to the previous state. Why is this awesome? Because each GameState can update/draw the previous one, useful for transparency / menus that don't fit the whole screen.