Compare the Setup subroutines from both the working and non-working versions you posted. Inside the Setup subroutine the last few lines of the code that worked according to you, have two lines that set rotation and fill the screen to black to start. Your code that did not work was missing those two lines. It was just a quick review and may make no difference. Good Luck.
The code you have is fairly complex with all the buttons. I would start commenting out sections of code until it was simple enough to actually work to display something. Then start putting back small sections until the code causing the white screen could be narrowed to a smaller section. The problem would then be easier to detect. For example if your loop code just tried to display "Hello World" in white, does that work?