diff --git a/src/main.ino b/src/main.ino
@@ -558,13 +558,17 @@ int calculateLinesRequired(String message) {
     for (unsigned int i = 0; i < message.length(); i++) {
         char c = message[i];
         if (c == '\x03') {
-            // Skip color code sequences from calculate instead of render to solve nick overlay issue
-            while (i < message.length() && (isdigit(message[i + 1]) || message[i + 1] == ',')) {
+            // Check for foreground color
+            if (i + 1 < message.length() && isdigit(message[i + 1])) {
                 i++;
-                if (isdigit(message[i + 1])) {
+                if (i + 1 < message.length() && isdigit(message[i + 1])) {
                     i++;
                 }
-                if (message[i] == ',' && isdigit(message[i + 1])) {
+            }
+            // Check for background color
+            if (i + 1 < message.length() && message[i + 1] == ',' && isdigit(message[i + 2])) {
+                i += 2; // Skip the comma
+                if (i + 1 < message.length() && isdigit(message[i + 1])) {
                     i++;
                 }
             }
@@ -580,6 +584,7 @@ int calculateLinesRequired(String message) {
     return linesRequired;
 }
 
+
 void displayCenteredText(String text) {
     tft.fillScreen(TFT_BLACK);
     tft.setTextDatum(MC_DATUM);
 |