 		break;
 		
 	case CM_PARTY:
-		return wheel(random(0, 255));
+		return wheel(randomVal & 0xFF);
 		break;
 		
 	default:

	// Loop through every LED
	for(uint16_t pixIdx = 0; pixIdx < MATRIX_HEIGHT * MATRIX_WIDTH; pixIdx++) {
			
		uint32_t pixColour = 0;
			
		// Get the current pixel transition
		PixelTransition pixTran = pixels.getPixel(pixIdx);
			
		// Get the colour for the given pixel
		if(pixTran != PIX_OFF) {
			if(colourUpdate == 0) {
				// Get new colour if we need to
				pixColour = getPixColour(pixIdx, mode, colour, colourIteration);
				
				ledColours[pixArrIdx] = (uint8_t)(pixColour >> 16);
				ledColours[pixArrIdx + 1] = (uint8_t)(pixColour >>  8);
				ledColours[pixArrIdx + 2] = (uint8_t)pixColour;
			} else {
				// Get the old colour
				pixColour = strip.Color(ledColours[pixArrIdx], ledColours[pixArrIdx + 1], ledColours[pixArrIdx + 2]);
			}
		}
			
		// Determine the pixel transitions

	#define COLOUR_UPDATE	5		// Defines the rate at which the colour mode gets updated, in multiples of LETTER_FADE
	
	static uint32_t lastRefresh = 0;
	static uint8_t colourIteration = 0;
	static int16_t fadeBrightness = 255;
	static uint8_t colourUpdate = 0;
	
	uint32_t currentMillis = millis();
	
