Variable Seems to Change on It's Own

your "mode" variable is declared after the arrays. This makes it vulnerable to being overwritten if you write
past the end of the array accidentally or on purpose. Try declaring "mode" before the arrays.

Rather than cover up the bug, why not fix it? Here is the code concerned:

  currentLED++;
  if (currentLED > pixels) {
    currentLED = 0;
  }

See anything wrong? I do!

[EDIT: I hadn't fully read reply#2 when I wrote this - looks like you may have fixed this already.]