Problem turning on display.

I am using a Newhaven 16x2 OLED parallel display ( 3.3v) on my Sanguino project running on a single Li Ion battery
I had the OLED powered all the time even when the sanguino was alseep. I turned the display off via code.
This worked fine but I was concerned with the battery drain ( 5ma for OLED when turned off via code).

So I now have the sangino switching a pin high that operates a transistor that operates a MOSFET to supply power to the OLED.

First time I powered it up the OLED did not work even though it was getting nearly full battery voltage to it (4.10/4.15 or so).
I tried putting project to sleep and waking up and it still didnt work.
I then removed battery and reconnected and it worked. After that it would turn on and off when in sleep mode.

Then this morning the display would not turn on when woken from sleep mode. I removed and replaced the battery and it all powered up fine and worked when put in and out of sleep mode.

I have checked the voltage at the OLED and this is turning on and off as expected.

Any ideas on what could be the issue? Do I need a delay between powering up OLED and turning it on via code?

Another problem that may or not be related is that the pin that drives D7 on the OLED remains high when display is turned off via code and power is turned off via MOSFET. Shouldt all pins be driven low when display is turned off ( noDisplay() )

"Shouldt all pins be driven low when display is turned off ( noDisplay() )"
I would think so - most devices are sped'ed to not have IO lines more than 0.5V above the Vcc line.
The pin can be damaged, or power could leak into other circuits and leave device partially powered.
FInd a way to bring all lines low before power is removed, and don't them go high before the Vcc line does.

Thanks. I will try digitalwrite pin low after display().

As it is I turn the MOSFET on before anything else and turn it off after every thing else. But I wonder if it does it fast enough.