Bei RGBW anstelle RGB hast Du ein Byte mehr je Lichtpunkt, also 114. Das könnte den Speicher überfordern.
uint32_t R, G, B, W = pixels.Color(0, 0, 0, 255);
...
int R = 255;
int G = 0;
int B = 0;
int W = 0;
Erst global, dann lokal in loop, der Sinn erschließt sich mir nicht.
void paintWord(int arrWord[], int R, int G, int B, int W)
Wenn R, G, B, W global sind, brauchst Du sie nicht an die Funktion zu übergeben.