diff --git a/magick/coder.c b/magick/coder.c
index 8943ae7..584fed5 100644
--- a/magick/coder.c
+++ b/magick/coder.c
@@ -884,7 +884,7 @@
         continue;
       }
     (void) ResetMagickMemory(coder_info,0,sizeof(*coder_info));
-    coder_info->path="[built-in]";
+    coder_info->path=(char *) "[built-in]";
     coder_info->magick=(char *) p->magick;
     coder_info->name=(char *) p->name;
     coder_info->exempt=MagickTrue;
diff --git a/magick/color.c b/magick/color.c
index 214f894..78680a5 100644
--- a/magick/color.c
+++ b/magick/color.c
@@ -79,13 +79,13 @@
   const char
     *name;
 
-  const double
+  const float
     red,
     green,
     blue,
     alpha;
 
-  const ComplianceType
+  const long
     compliance;
 } ColorMapInfo;
 
@@ -2106,9 +2106,6 @@
 static MagickBooleanType LoadColorLists(const char *filename,
   ExceptionInfo *exception)
 {
-#if defined(MAGICKCORE_EMBEDDABLE_SUPPORT)
-  return(LoadColorList(ColorMap,"built-in",0,exception));
-#else
   const StringInfo
     *option;
 
@@ -2152,7 +2149,7 @@
         continue;
       }
     (void) ResetMagickMemory(color_info,0,sizeof(*color_info));
-    color_info->path="[built-in]";
+    color_info->path=(char *) "[built-in]";
     color_info->name=(char *) p->name;
     GetMagickPixelPacket((Image *) NULL,&color_info->color);
     color_info->color.red=scale*p->red;
@@ -2160,7 +2157,7 @@
     color_info->color.blue=scale*p->blue;
     color_info->color.opacity=(MagickRealType) (QuantumRange-QuantumRange*
       p->alpha);
-    color_info->compliance=p->compliance;
+    color_info->compliance=(ComplianceType) p->compliance;
     color_info->exempt=MagickTrue;
     color_info->signature=MagickSignature;
     status=AppendValueToLinkedList(color_list,color_info);
@@ -2181,7 +2178,6 @@
   }
   options=DestroyConfigureOptions(options);
   return(status != 0 ? MagickTrue : MagickFalse);
-#endif
 }
 
 /*
diff --git a/magick/magic.c b/magick/magic.c
index 3300abb..94b3464 100644
--- a/magick/magic.c
+++ b/magick/magic.c
@@ -964,9 +964,6 @@
 static MagickBooleanType LoadMagicLists(const char *filename,
   ExceptionInfo *exception)
 {
-#if defined(MAGICKCORE_EMBEDDABLE_SUPPORT)
-  return(LoadMagicList(MagicMap,"built-in",0,exception));
-#else
   char
     path[MaxTextExtent];
 
@@ -1009,7 +1006,7 @@
         continue;
       }
     (void) ResetMagickMemory(magic_info,0,sizeof(*magic_info));
-    magic_info->path="[built-in]";
+    magic_info->path=(char *) "[built-in]";
     magic_info->name=(char *) p->name;
     magic_info->offset=p->offset;
     magic_info->target=(char *) p->magic;
@@ -1037,5 +1034,4 @@
   }
   options=DestroyConfigureOptions(options);
   return(status != 0 ? MagickTrue : MagickFalse);
-#endif
 }
