one more suggestion… try to debounce the interrupts:
void powerPress()
{
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
if (interrupt_time - last_interrupt_time > 200)
{
powerflag = true;
}
last_interrupt_time = interrupt_time;
}