             float fraction = ((float)millis() - currentMillis) / ((float)transitionTime / 2);
 
             if (millis() - currentMillis < transitionTime / 2) {
-                color.red = 255 - 255.0 * fraction;
-                color.green = 255.0 * fraction;
-                color.blue = 0;
+                color = {
+                  (uint8_t)(255 - 255.0 * fraction),
+                  (uint8_t)(255.0 * fraction),
+                  0
+                };
             }
             else {
-                color.red = 0;
-                color.green = 255 - 255.0 / 2 * (fraction - 1.0);
-                color.blue = 255.0 * (fraction - 1.0);
+                color = {
+                  0,
+                  (uint8_t)(255 - 255.0 / 2 * (fraction - 1.0)),
+                  (uint8_t)(255.0 * (fraction - 1.0))
+                };
             }
 
             for (i = 0; i < 20; i++) {

            fraction -= 1.0;
            if (fraction < 0) fraction = 0.0;

            color.red = 0;
            color.green = 255 - 255.0 / 2 * (fraction);
            color.blue = 255.0 * (fraction);

            matrix.drawCircle(matrix.getScreenWidth() / 2, matrix.getScreenHeight() / 2, i, color);
            matrix.swapBuffers(true);

            rgb24 color;
            float fraction = ((float)millis() - currentMillis) / ((float)transitionTime / 2);

            color = {
              (uint8_t)(255 - 255.0 * fraction),
              (uint8_t)(255.0 * fraction),
              0
            };

            matrix.drawRoundRectangle(matrix.getScreenWidth() / 2 - i - 1, matrix.getScreenHeight() / 2 - i - 1, matrix.getScreenWidth() / 2 + i, matrix.getScreenHeight() / 2 + i, i / 2, color);
            matrix.swapBuffers(true);
