diff --git a/MagickCore/cache.c b/MagickCore/cache.c
index 02062dc..5a2f652 100644
--- a/MagickCore/cache.c
+++ b/MagickCore/cache.c
@@ -196,7 +196,7 @@
   (void) ResetMagickMemory(cache_info,0,sizeof(*cache_info));
   cache_info->type=UndefinedCache;
   cache_info->mode=IOMode;
-  cache_info->colorspace=RGBColorspace;
+  cache_info->colorspace=sRGBColorspace;
   cache_info->file=(-1);
   cache_info->id=GetMagickThreadId();
   cache_info->number_threads=number_threads;
diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index a230214..aea3959 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -2464,7 +2464,7 @@
         if (preview_image == (Image *) NULL)
           break;
         threshold+=0.4f;
-        (void) SegmentImage(preview_image,RGBColorspace,MagickFalse,threshold,
+        (void) SegmentImage(preview_image,sRGBColorspace,MagickFalse,threshold,
           threshold,exception);
         (void) FormatLocaleString(label,MaxTextExtent,"segment %gx%g",
           threshold,threshold);
diff --git a/MagickCore/profile.c b/MagickCore/profile.c
index 7a886df..0ca9353 100644
--- a/MagickCore/profile.c
+++ b/MagickCore/profile.c
@@ -5876,7 +5876,7 @@
               }
               case cmsSigRgbData:
               {
-                source_colorspace=RGBColorspace;
+                source_colorspace=sRGBColorspace;
                 source_type=(cmsUInt32Number) TYPE_RGB_16;
                 source_channels=3;
                 break;
@@ -5938,7 +5938,7 @@
               }
               case cmsSigRgbData:
               {
-                target_colorspace=RGBColorspace;
+                target_colorspace=sRGBColorspace;
                 target_type=(cmsUInt32Number) TYPE_RGB_16;
                 target_channels=3;
                 break;
diff --git a/MagickCore/quantize.c b/MagickCore/quantize.c
index 35f2e53..6069c3c 100644
--- a/MagickCore/quantize.c
+++ b/MagickCore/quantize.c
@@ -516,7 +516,7 @@
     if ((image->colorspace != GRAYColorspace) &&
         (IsRGBColorspace(image->colorspace) == MagickFalse) &&
         (image->colorspace != CMYColorspace))
-      (void) TransformImageColorspace((Image *) image,RGBColorspace,exception);
+      (void) TransformImageColorspace((Image *) image,sRGBColorspace,exception);
   if (AcquireImageColormap(image,cube_info->colors,exception) == MagickFalse)
     ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
       image->filename);
@@ -682,7 +682,7 @@
   (void) SyncImage(image,exception);
   if ((cube_info->quantize_info->colorspace != UndefinedColorspace) &&
       (cube_info->quantize_info->colorspace != CMYKColorspace))
-    (void) TransformImageColorspace((Image *) image,RGBColorspace,exception);
+    (void) TransformImageColorspace((Image *) image,sRGBColorspace,exception);
   return(MagickTrue);
 }
 
@@ -805,7 +805,7 @@
     if ((image->colorspace != GRAYColorspace) &&
         (image->colorspace != CMYColorspace) &&
         (IsRGBColorspace(image->colorspace) == MagickFalse))
-      (void) TransformImageColorspace((Image *) image,RGBColorspace,exception);
+      (void) TransformImageColorspace((Image *) image,sRGBColorspace,exception);
   midpoint.red=(MagickRealType) QuantumRange/2.0;
   midpoint.green=(MagickRealType) QuantumRange/2.0;
   midpoint.blue=(MagickRealType) QuantumRange/2.0;
@@ -1000,7 +1000,7 @@
   image_view=DestroyCacheView(image_view);
   if ((cube_info->quantize_info->colorspace != UndefinedColorspace) &&
       (cube_info->quantize_info->colorspace != CMYKColorspace))
-    (void) TransformImageColorspace((Image *) image,RGBColorspace,exception);
+    (void) TransformImageColorspace((Image *) image,sRGBColorspace,exception);
   return(MagickTrue);
 }
 
