diff -Naur xplanet-1.3.1.orig/src/readConfig.cpp xplanet-1.3.1/src/readConfig.cpp
--- xplanet-1.3.1.orig/src/readConfig.cpp	2013-02-16 20:37:47.000000000 +0100
+++ xplanet-1.3.1/src/readConfig.cpp	2021-12-21 10:06:22.434195435 +0100
@@ -46,10 +46,10 @@
         {
         case ARC_COLOR:
         {
-            int r, g, b;
-            if (sscanf(returnString, "%d,%d,%d", &r, &g, &b) == 3)
+            unsigned char r, g, b;
+            if (sscanf(returnString, "%hhu,%hhu,%hhu", &r, &g, &b) == 3)
             {
-                unsigned char color[3] = { r & 0xff, g & 0xff, b & 0xff };
+                unsigned char color[3] = { r, g, b };
                 currentProperties->ArcColor(color);
             }
             else
@@ -176,10 +176,10 @@
         break;
         case COLOR:
         {
-            int r, g, b;
-            if (sscanf(returnString, "%d,%d,%d", &r, &g, &b) == 3)
+            unsigned char r, g, b;
+            if (sscanf(returnString, "%hhu,%hhu,%hhu", &r, &g, &b) == 3)
             {
-                unsigned char color[3] = { r & 0xff, g & 0xff, b & 0xff };
+                unsigned char color[3] = { r, g, b };
                 currentProperties->Color(color);
             }
             else
@@ -241,10 +241,10 @@
         break;
         case GRID_COLOR:
         {
-            int r, g, b;
-            if (sscanf(returnString, "%d,%d,%d", &r, &g, &b) == 3)
+            unsigned char r, g, b;
+            if (sscanf(returnString, "%hhu,%hhu,%hhu", &r, &g, &b) == 3)
             {
-                unsigned char color[3] = { r & 0xff, g & 0xff, b & 0xff };
+                unsigned char color[3] = { r, g, b };
                 currentProperties->GridColor(color);
             }
             else
@@ -293,10 +293,10 @@
         break;
         case MARKER_COLOR:
         {
-            int r, g, b;
-            if (sscanf(returnString, "%d,%d,%d", &r, &g, &b) == 3)
+            unsigned char r, g, b;
+            if (sscanf(returnString, "%hhu,%hhu,%hhu", &r, &g, &b) == 3)
             {
-                unsigned char color[3] = { r & 0xff, g & 0xff, b & 0xff };
+                unsigned char color[3] = { r, g, b };
                 currentProperties->MarkerColor(color);
             }
             else
@@ -400,10 +400,10 @@
         break;
         case ORBIT_COLOR:
         {
-            int r, g, b;
-            if (sscanf(returnString, "%d,%d,%d", &r, &g, &b) == 3)
+            unsigned char r, g, b;
+            if (sscanf(returnString, "%hhu,%hhu,%hhu", &r, &g, &b) == 3)
             {
-                unsigned char color[3] = { r & 0xff, g & 0xff, b & 0xff };
+                unsigned char color[3] = { r, g, b };
                 currentProperties->OrbitColor(color);
             }
             else
@@ -470,10 +470,10 @@
             break;
         case TEXT_COLOR:
         {
-            int r, g, b;
-            if (sscanf(returnString, "%d,%d,%d", &r, &g, &b) == 3)
+            unsigned char r, g, b;
+            if (sscanf(returnString, "%hhu,%hhu,%hhu", &r, &g, &b) == 3)
             {
-                unsigned char color[3] = { r & 0xff, g & 0xff, b & 0xff };
+                unsigned char color[3] = { r, g, b };
                 currentProperties->TextColor(color);
             }
             else
