diff --git a/MagickCore/coder.c b/MagickCore/coder.c
index 0f0dccc..bce4722 100644
--- a/MagickCore/coder.c
+++ b/MagickCore/coder.c
@@ -200,6 +200,7 @@
     { "ROSE", "MAGICK" },
     { "RW2", "DNG" },
     { "SHTML", "HTML" },
+    { "SPARSE-COLOR", "TXT" },
     { "SR2", "DNG" },
     { "SRF", "DNG" },
     { "SVGZ", "SVG" },
diff --git a/MagickCore/version.h b/MagickCore/version.h
index f2ebd25..0216170 100644
--- a/MagickCore/version.h
+++ b/MagickCore/version.h
@@ -27,7 +27,7 @@
 */
 #define MagickPackageName "ImageMagick"
 #define MagickCopyright  "Copyright (C) 1999-2013 ImageMagick Studio LLC"
-#define MagickSVNRevision  "11302:11399M"
+#define MagickSVNRevision  "11302:11401M"
 #define MagickLibVersion  0x700
 #define MagickLibVersionText  "7.0.0"
 #define MagickLibVersionNumber  1,0,0
diff --git a/Makefile.in b/Makefile.in
index f7034ea..df7834f 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -531,18 +531,17 @@
 	coders/pnm.c coders/preview.c coders/ps.c coders/ps2.c \
 	coders/ps3.c coders/psd.c coders/pwp.c coders/raw.c \
 	coders/rgb.c coders/rla.c coders/rle.c coders/scr.c \
-	coders/sct.c coders/sfw.c coders/sgi.c coders/sparse-color.c \
-	coders/stegano.c coders/sun.c coders/svg.c coders/tga.c \
-	coders/thumbnail.c coders/tile.c coders/tim.c coders/ttf.c \
-	coders/txt.c coders/uil.c coders/url.c coders/uyvy.c \
-	coders/vicar.c coders/vid.c coders/viff.c coders/wbmp.c \
-	coders/wpg.c coders/xbm.c coders/xc.c coders/xcf.c \
-	coders/xpm.c coders/xps.c coders/ycbcr.c coders/yuv.c \
-	coders/dps.c coders/djvu.c coders/exr.c coders/fpx.c \
-	coders/clipboard.c coders/emf.c coders/jbig.c coders/jpeg.c \
-	coders/jp2.c coders/png.c coders/ept.c coders/tiff.c \
-	coders/webp.c coders/wmf.c coders/x.c coders/xwd.c \
-	filters/analyze.c
+	coders/sct.c coders/sfw.c coders/sgi.c coders/stegano.c \
+	coders/sun.c coders/svg.c coders/tga.c coders/thumbnail.c \
+	coders/tile.c coders/tim.c coders/ttf.c coders/txt.c \
+	coders/uil.c coders/url.c coders/uyvy.c coders/vicar.c \
+	coders/vid.c coders/viff.c coders/wbmp.c coders/wpg.c \
+	coders/xbm.c coders/xc.c coders/xcf.c coders/xpm.c \
+	coders/xps.c coders/ycbcr.c coders/yuv.c coders/dps.c \
+	coders/djvu.c coders/exr.c coders/fpx.c coders/clipboard.c \
+	coders/emf.c coders/jbig.c coders/jpeg.c coders/jp2.c \
+	coders/png.c coders/ept.c coders/tiff.c coders/webp.c \
+	coders/wmf.c coders/x.c coders/xwd.c filters/analyze.c
 am__objects_1 = MagickCore/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-accelerate.lo \
 	MagickCore/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-animate.lo \
 	MagickCore/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-annotate.lo \
@@ -732,7 +731,6 @@
 	coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sct.lo \
 	coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sfw.lo \
 	coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sgi.lo \
-	coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sparse-color.lo \
 	coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-stegano.lo \
 	coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sun.lo \
 	coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-svg.lo \
@@ -1519,16 +1517,6 @@
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(coders_sgi_la_LDFLAGS) $(LDFLAGS) -o $@
 @WITH_MODULES_TRUE@am_coders_sgi_la_rpath = -rpath $(codersdir)
-coders_sparse_color_la_DEPENDENCIES = $(MAGICKCORE_LIBS)
-am_coders_sparse_color_la_OBJECTS =  \
-	coders/coders_sparse_color_la-sparse-color.lo
-coders_sparse_color_la_OBJECTS = $(am_coders_sparse_color_la_OBJECTS)
-coders_sparse_color_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(AM_CFLAGS) $(CFLAGS) $(coders_sparse_color_la_LDFLAGS) \
-	$(LDFLAGS) -o $@
-@WITH_MODULES_TRUE@am_coders_sparse_color_la_rpath = -rpath \
-@WITH_MODULES_TRUE@	$(codersdir)
 coders_stegano_la_DEPENDENCIES = $(MAGICKCORE_LIBS)
 am_coders_stegano_la_OBJECTS = coders/coders_stegano_la-stegano.lo
 coders_stegano_la_OBJECTS = $(am_coders_stegano_la_OBJECTS)
@@ -2082,23 +2070,22 @@
 	$(coders_rgb_la_SOURCES) $(coders_rla_la_SOURCES) \
 	$(coders_rle_la_SOURCES) $(coders_scr_la_SOURCES) \
 	$(coders_sct_la_SOURCES) $(coders_sfw_la_SOURCES) \
-	$(coders_sgi_la_SOURCES) $(coders_sparse_color_la_SOURCES) \
-	$(coders_stegano_la_SOURCES) $(coders_sun_la_SOURCES) \
-	$(coders_svg_la_SOURCES) $(coders_tga_la_SOURCES) \
-	$(coders_thumbnail_la_SOURCES) $(coders_tiff_la_SOURCES) \
-	$(coders_tile_la_SOURCES) $(coders_tim_la_SOURCES) \
-	$(coders_ttf_la_SOURCES) $(coders_txt_la_SOURCES) \
-	$(coders_uil_la_SOURCES) $(coders_url_la_SOURCES) \
-	$(coders_uyvy_la_SOURCES) $(coders_vicar_la_SOURCES) \
-	$(coders_vid_la_SOURCES) $(coders_viff_la_SOURCES) \
-	$(coders_wbmp_la_SOURCES) $(coders_webp_la_SOURCES) \
-	$(coders_wmf_la_SOURCES) $(coders_wpg_la_SOURCES) \
-	$(coders_x_la_SOURCES) $(coders_xbm_la_SOURCES) \
-	$(coders_xc_la_SOURCES) $(coders_xcf_la_SOURCES) \
-	$(coders_xpm_la_SOURCES) $(coders_xps_la_SOURCES) \
-	$(coders_xwd_la_SOURCES) $(coders_ycbcr_la_SOURCES) \
-	$(coders_yuv_la_SOURCES) $(filters_analyze_la_SOURCES) \
-	$(Magick___demo_analyze_SOURCES) \
+	$(coders_sgi_la_SOURCES) $(coders_stegano_la_SOURCES) \
+	$(coders_sun_la_SOURCES) $(coders_svg_la_SOURCES) \
+	$(coders_tga_la_SOURCES) $(coders_thumbnail_la_SOURCES) \
+	$(coders_tiff_la_SOURCES) $(coders_tile_la_SOURCES) \
+	$(coders_tim_la_SOURCES) $(coders_ttf_la_SOURCES) \
+	$(coders_txt_la_SOURCES) $(coders_uil_la_SOURCES) \
+	$(coders_url_la_SOURCES) $(coders_uyvy_la_SOURCES) \
+	$(coders_vicar_la_SOURCES) $(coders_vid_la_SOURCES) \
+	$(coders_viff_la_SOURCES) $(coders_wbmp_la_SOURCES) \
+	$(coders_webp_la_SOURCES) $(coders_wmf_la_SOURCES) \
+	$(coders_wpg_la_SOURCES) $(coders_x_la_SOURCES) \
+	$(coders_xbm_la_SOURCES) $(coders_xc_la_SOURCES) \
+	$(coders_xcf_la_SOURCES) $(coders_xpm_la_SOURCES) \
+	$(coders_xps_la_SOURCES) $(coders_xwd_la_SOURCES) \
+	$(coders_ycbcr_la_SOURCES) $(coders_yuv_la_SOURCES) \
+	$(filters_analyze_la_SOURCES) $(Magick___demo_analyze_SOURCES) \
 	$(Magick___demo_button_SOURCES) $(Magick___demo_demo_SOURCES) \
 	$(Magick___demo_detrans_SOURCES) $(Magick___demo_flip_SOURCES) \
 	$(Magick___demo_gravity_SOURCES) \
@@ -2171,23 +2158,22 @@
 	$(coders_rgb_la_SOURCES) $(coders_rla_la_SOURCES) \
 	$(coders_rle_la_SOURCES) $(coders_scr_la_SOURCES) \
 	$(coders_sct_la_SOURCES) $(coders_sfw_la_SOURCES) \
-	$(coders_sgi_la_SOURCES) $(coders_sparse_color_la_SOURCES) \
-	$(coders_stegano_la_SOURCES) $(coders_sun_la_SOURCES) \
-	$(coders_svg_la_SOURCES) $(coders_tga_la_SOURCES) \
-	$(coders_thumbnail_la_SOURCES) $(coders_tiff_la_SOURCES) \
-	$(coders_tile_la_SOURCES) $(coders_tim_la_SOURCES) \
-	$(coders_ttf_la_SOURCES) $(coders_txt_la_SOURCES) \
-	$(coders_uil_la_SOURCES) $(coders_url_la_SOURCES) \
-	$(coders_uyvy_la_SOURCES) $(coders_vicar_la_SOURCES) \
-	$(coders_vid_la_SOURCES) $(coders_viff_la_SOURCES) \
-	$(coders_wbmp_la_SOURCES) $(coders_webp_la_SOURCES) \
-	$(coders_wmf_la_SOURCES) $(coders_wpg_la_SOURCES) \
-	$(coders_x_la_SOURCES) $(coders_xbm_la_SOURCES) \
-	$(coders_xc_la_SOURCES) $(coders_xcf_la_SOURCES) \
-	$(coders_xpm_la_SOURCES) $(coders_xps_la_SOURCES) \
-	$(coders_xwd_la_SOURCES) $(coders_ycbcr_la_SOURCES) \
-	$(coders_yuv_la_SOURCES) $(filters_analyze_la_SOURCES) \
-	$(Magick___demo_analyze_SOURCES) \
+	$(coders_sgi_la_SOURCES) $(coders_stegano_la_SOURCES) \
+	$(coders_sun_la_SOURCES) $(coders_svg_la_SOURCES) \
+	$(coders_tga_la_SOURCES) $(coders_thumbnail_la_SOURCES) \
+	$(coders_tiff_la_SOURCES) $(coders_tile_la_SOURCES) \
+	$(coders_tim_la_SOURCES) $(coders_ttf_la_SOURCES) \
+	$(coders_txt_la_SOURCES) $(coders_uil_la_SOURCES) \
+	$(coders_url_la_SOURCES) $(coders_uyvy_la_SOURCES) \
+	$(coders_vicar_la_SOURCES) $(coders_vid_la_SOURCES) \
+	$(coders_viff_la_SOURCES) $(coders_wbmp_la_SOURCES) \
+	$(coders_webp_la_SOURCES) $(coders_wmf_la_SOURCES) \
+	$(coders_wpg_la_SOURCES) $(coders_x_la_SOURCES) \
+	$(coders_xbm_la_SOURCES) $(coders_xc_la_SOURCES) \
+	$(coders_xcf_la_SOURCES) $(coders_xpm_la_SOURCES) \
+	$(coders_xps_la_SOURCES) $(coders_xwd_la_SOURCES) \
+	$(coders_ycbcr_la_SOURCES) $(coders_yuv_la_SOURCES) \
+	$(filters_analyze_la_SOURCES) $(Magick___demo_analyze_SOURCES) \
 	$(Magick___demo_button_SOURCES) $(Magick___demo_demo_SOURCES) \
 	$(Magick___demo_detrans_SOURCES) $(Magick___demo_flip_SOURCES) \
 	$(Magick___demo_gravity_SOURCES) \
@@ -3150,7 +3136,6 @@
 	coders/sct.c \
 	coders/sfw.c \
 	coders/sgi.c \
-	coders/sparse-color.c \
 	coders/stegano.c \
 	coders/sun.c \
 	coders/svg.c \
@@ -3271,7 +3256,6 @@
 @WITH_MODULES_TRUE@	coders/sct.la \
 @WITH_MODULES_TRUE@	coders/sfw.la \
 @WITH_MODULES_TRUE@	coders/sgi.la \
-@WITH_MODULES_TRUE@	coders/sparse-color.la \
 @WITH_MODULES_TRUE@	coders/stegano.la \
 @WITH_MODULES_TRUE@	coders/sun.la \
 @WITH_MODULES_TRUE@	coders/svg.la \
@@ -3851,12 +3835,6 @@
 coders_sgi_la_LDFLAGS = $(MODULECOMMONFLAGS)
 coders_sgi_la_LIBADD = $(MAGICKCORE_LIBS)
 
-# SPARSE-COLOR coder module
-coders_sparse_color_la_SOURCES = coders/sparse-color.c
-coders_sparse_color_la_CPPFLAGS = $(MODULE_EXTRA_CPPFLAGS)
-coders_sparse_color_la_LDFLAGS = $(MODULECOMMONFLAGS)
-coders_sparse_color_la_LIBADD = $(MAGICKCORE_LIBS)
-
 # STEGANO coder module
 coders_stegano_la_SOURCES = coders/stegano.c
 coders_stegano_la_CPPFLAGS = $(MODULE_EXTRA_CPPFLAGS)
@@ -5782,8 +5760,6 @@
 	coders/$(am__dirstamp) coders/$(DEPDIR)/$(am__dirstamp)
 coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sgi.lo:  \
 	coders/$(am__dirstamp) coders/$(DEPDIR)/$(am__dirstamp)
-coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sparse-color.lo:  \
-	coders/$(am__dirstamp) coders/$(DEPDIR)/$(am__dirstamp)
 coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-stegano.lo:  \
 	coders/$(am__dirstamp) coders/$(DEPDIR)/$(am__dirstamp)
 coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sun.lo:  \
@@ -6318,10 +6294,6 @@
 	coders/$(DEPDIR)/$(am__dirstamp)
 coders/sgi.la: $(coders_sgi_la_OBJECTS) $(coders_sgi_la_DEPENDENCIES) $(EXTRA_coders_sgi_la_DEPENDENCIES) coders/$(am__dirstamp)
 	$(AM_V_CCLD)$(coders_sgi_la_LINK) $(am_coders_sgi_la_rpath) $(coders_sgi_la_OBJECTS) $(coders_sgi_la_LIBADD) $(LIBS)
-coders/coders_sparse_color_la-sparse-color.lo: coders/$(am__dirstamp) \
-	coders/$(DEPDIR)/$(am__dirstamp)
-coders/sparse-color.la: $(coders_sparse_color_la_OBJECTS) $(coders_sparse_color_la_DEPENDENCIES) $(EXTRA_coders_sparse_color_la_DEPENDENCIES) coders/$(am__dirstamp)
-	$(AM_V_CCLD)$(coders_sparse_color_la_LINK) $(am_coders_sparse_color_la_rpath) $(coders_sparse_color_la_OBJECTS) $(coders_sparse_color_la_LIBADD) $(LIBS)
 coders/coders_stegano_la-stegano.lo: coders/$(am__dirstamp) \
 	coders/$(DEPDIR)/$(am__dirstamp)
 coders/stegano.la: $(coders_stegano_la_OBJECTS) $(coders_stegano_la_DEPENDENCIES) $(EXTRA_coders_stegano_la_DEPENDENCIES) coders/$(am__dirstamp)
@@ -7005,7 +6977,6 @@
 @AMDEP_TRUE@@am__include@ @am__quote@coders/$(DEPDIR)/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sct.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@coders/$(DEPDIR)/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sfw.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@coders/$(DEPDIR)/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sgi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@coders/$(DEPDIR)/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sparse-color.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@coders/$(DEPDIR)/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-stegano.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@coders/$(DEPDIR)/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sun.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@coders/$(DEPDIR)/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-svg.Plo@am__quote@
@@ -7126,7 +7097,6 @@
 @AMDEP_TRUE@@am__include@ @am__quote@coders/$(DEPDIR)/coders_sct_la-sct.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@coders/$(DEPDIR)/coders_sfw_la-sfw.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@coders/$(DEPDIR)/coders_sgi_la-sgi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@coders/$(DEPDIR)/coders_sparse_color_la-sparse-color.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@coders/$(DEPDIR)/coders_stegano_la-stegano.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@coders/$(DEPDIR)/coders_sun_la-sun.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@coders/$(DEPDIR)/coders_svg_la-svg.Plo@am__quote@
@@ -8401,13 +8371,6 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sgi.lo `test -f 'coders/sgi.c' || echo '$(srcdir)/'`coders/sgi.c
 
-coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sparse-color.lo: coders/sparse-color.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sparse-color.lo -MD -MP -MF coders/$(DEPDIR)/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sparse-color.Tpo -c -o coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sparse-color.lo `test -f 'coders/sparse-color.c' || echo '$(srcdir)/'`coders/sparse-color.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) coders/$(DEPDIR)/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sparse-color.Tpo coders/$(DEPDIR)/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sparse-color.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='coders/sparse-color.c' object='coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sparse-color.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-sparse-color.lo `test -f 'coders/sparse-color.c' || echo '$(srcdir)/'`coders/sparse-color.c
-
 coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-stegano.lo: coders/stegano.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-stegano.lo -MD -MP -MF coders/$(DEPDIR)/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-stegano.Tpo -c -o coders/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-stegano.lo `test -f 'coders/stegano.c' || echo '$(srcdir)/'`coders/stegano.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) coders/$(DEPDIR)/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-stegano.Tpo coders/$(DEPDIR)/MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la-stegano.Plo
@@ -9500,13 +9463,6 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(coders_sgi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o coders/coders_sgi_la-sgi.lo `test -f 'coders/sgi.c' || echo '$(srcdir)/'`coders/sgi.c
 
-coders/coders_sparse_color_la-sparse-color.lo: coders/sparse-color.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(coders_sparse_color_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT coders/coders_sparse_color_la-sparse-color.lo -MD -MP -MF coders/$(DEPDIR)/coders_sparse_color_la-sparse-color.Tpo -c -o coders/coders_sparse_color_la-sparse-color.lo `test -f 'coders/sparse-color.c' || echo '$(srcdir)/'`coders/sparse-color.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) coders/$(DEPDIR)/coders_sparse_color_la-sparse-color.Tpo coders/$(DEPDIR)/coders_sparse_color_la-sparse-color.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='coders/sparse-color.c' object='coders/coders_sparse_color_la-sparse-color.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(coders_sparse_color_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o coders/coders_sparse_color_la-sparse-color.lo `test -f 'coders/sparse-color.c' || echo '$(srcdir)/'`coders/sparse-color.c
-
 coders/coders_stegano_la-stegano.lo: coders/stegano.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(coders_stegano_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT coders/coders_stegano_la-stegano.lo -MD -MP -MF coders/$(DEPDIR)/coders_stegano_la-stegano.Tpo -c -o coders/coders_stegano_la-stegano.lo `test -f 'coders/stegano.c' || echo '$(srcdir)/'`coders/stegano.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) coders/$(DEPDIR)/coders_stegano_la-stegano.Tpo coders/$(DEPDIR)/coders_stegano_la-stegano.Plo
diff --git a/coders/Makefile.am b/coders/Makefile.am
index a065654..def0bf2 100644
--- a/coders/Makefile.am
+++ b/coders/Makefile.am
@@ -163,7 +163,6 @@
 	coders/sct.c \
 	coders/sfw.c \
 	coders/sgi.c \
-	coders/sparse-color.c \
 	coders/stegano.c \
 	coders/sun.c \
 	coders/svg.c \
@@ -284,7 +283,6 @@
 	coders/sct.la \
 	coders/sfw.la \
 	coders/sgi.la \
-	coders/sparse-color.la \
 	coders/stegano.la \
 	coders/sun.la \
 	coders/svg.la \
@@ -866,12 +864,6 @@
 coders_sgi_la_LDFLAGS      = $(MODULECOMMONFLAGS)
 coders_sgi_la_LIBADD       = $(MAGICKCORE_LIBS)
 
-# SPARSE-COLOR coder module
-coders_sparse_color_la_SOURCES  = coders/sparse-color.c
-coders_sparse_color_la_CPPFLAGS = $(MODULE_EXTRA_CPPFLAGS)
-coders_sparse_color_la_LDFLAGS  = $(MODULECOMMONFLAGS)
-coders_sparse_color_la_LIBADD   = $(MAGICKCORE_LIBS)
-
 # STEGANO coder module
 coders_stegano_la_SOURCES  = coders/stegano.c
 coders_stegano_la_CPPFLAGS = $(MODULE_EXTRA_CPPFLAGS)
diff --git a/coders/gradient.c b/coders/gradient.c
index f356f73..b3e0973 100644
--- a/coders/gradient.c
+++ b/coders/gradient.c
@@ -158,7 +158,8 @@
       image=DestroyImageList(image);
       return((Image *) NULL);
     }
-  if ((start_color.alpha_trait != BlendPixelTrait) && (stop_color.alpha_trait != BlendPixelTrait))
+  if ((start_color.alpha_trait != BlendPixelTrait) &&
+      (stop_color.alpha_trait != BlendPixelTrait))
     (void) SetImageAlphaChannel(image,DeactivateAlphaChannel,exception);
   return(GetFirstImageInList(image));
 }
diff --git a/coders/sparse-color.c b/coders/sparse-color.c
deleted file mode 100644
index 64cf870..0000000
--- a/coders/sparse-color.c
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%                  SSSSS  PPPP    AAA   RRRR   SSSSS  EEEEE                   %
-%                  SS     P   P  A   A  R   R  SS     E                       %
-%                   SSS   PPPP   AAAAA  RRRR    SSS   EEE                     %
-%                      S  P      A   A  R R       SS  E                       %
-%                  SSSSS  P      A   A  R  R   SSSSS  EEEEE                   %
-%                                                                             %
-%                      CCCC   OOO   L       OOO   RRRR                        %
-%                     C      O   O  L      O   O  R   R                       %
-%                     C      O   O  L      O   O  RRRR                        %
-%                     C      O   O  L      O   O  R R                         %
-%                      CCCC   OOO   LLLLL   OOO   R  R                        %
-%                                                                             %
-%                                                                             %
-%                     Write Pixels in Sparse Color Format                     %
-%                                                                             %
-%                              Software Design                                %
-%                                John Cristy                                  %
-%                                March 2013                                   %
-%                                                                             %
-%                                                                             %
-%  Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization      %
-%  dedicated to making software imaging solutions freely available.           %
-%                                                                             %
-%  You may not use this file except in compliance with the License.  You may  %
-%  obtain a copy of the License at                                            %
-%                                                                             %
-%    http://www.imagemagick.org/script/license.php                            %
-%                                                                             %
-%  Unless required by applicable law or agreed to in writing, software        %
-%  distributed under the License is distributed on an "AS IS" BASIS,          %
-%  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   %
-%  See the License for the specific language governing permissions and        %
-%  limitations under the License.                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%
-*/
-
-/*
-  Include declarations.
-*/
-#include "MagickCore/studio.h"
-#include "MagickCore/annotate.h"
-#include "MagickCore/attribute.h"
-#include "MagickCore/blob.h"
-#include "MagickCore/blob-private.h"
-#include "MagickCore/cache.h"
-#include "MagickCore/color.h"
-#include "MagickCore/color-private.h"
-#include "MagickCore/colorspace.h"
-#include "MagickCore/constitute.h"
-#include "MagickCore/draw.h"
-#include "MagickCore/exception.h"
-#include "MagickCore/exception-private.h"
-#include "MagickCore/geometry.h"
-#include "MagickCore/image.h"
-#include "MagickCore/image-private.h"
-#include "MagickCore/list.h"
-#include "MagickCore/magick.h"
-#include "MagickCore/memory_.h"
-#include "MagickCore/monitor.h"
-#include "MagickCore/monitor-private.h"
-#include "MagickCore/option.h"
-#include "MagickCore/pixel-accessor.h"
-#include "MagickCore/quantum-private.h"
-#include "MagickCore/static.h"
-#include "MagickCore/statistic.h"
-#include "MagickCore/string_.h"
-#include "MagickCore/module.h"
-
-/*
-  Forward declarations.
-*/
-static MagickBooleanType
-  WriteSPARSE_COLORImage(const ImageInfo *,Image *,ExceptionInfo *);
-
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   R e g i s t e r S P A R S E _ C O L O R I m a g e                         %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  RegisterSPARSE_COLORImage() adds attributes for the SPARSE_COLOR image
-%  format.
-%
-%  The format of the RegisterSPARSE_COLORImage method is:
-%
-%      size_t RegisterSPARSE_COLORImage(void)
-%
-*/
-ModuleExport size_t RegisterSPARSE_COLORImage(void)
-{
-  MagickInfo
-    *entry;
-
-  entry=SetMagickInfo("SPARSE-COLOR");
-  entry->encoder=(EncodeImageHandler *) WriteSPARSE_COLORImage;
-  entry->raw=MagickTrue;
-  entry->endian_support=MagickTrue;
-  entry->stealth=MagickTrue;
-  entry->description=ConstantString("Sparse-Color");
-  entry->module=ConstantString("SPARSE-COLOR");
-  (void) RegisterMagickInfo(entry);
-  return(MagickImageCoderSignature);
-}
-
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   U n r e g i s t e r S P A R S E _ C O L O R I m a g e                     %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  UnregisterSPARSE_COLORImage() removes format registrations made by the
-%  SPARSE_COLOR module from the list of supported format.
-%
-%  The format of the UnregisterSPARSE_COLORImage method is:
-%
-%      UnregisterSPARSE_COLORImage(void)
-%
-*/
-ModuleExport void UnregisterSPARSE_COLORImage(void)
-{
-  (void) UnregisterMagickInfo("SPARSE-COLOR");
-}
-
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   W r i t e S P A R S E _ C O L O R I m a g e                               %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  WriteSPARSE_COLORImage writes the pixel values as text numbers.
-%
-%  The format of the WriteSPARSE_COLORImage method is:
-%
-%      MagickBooleanType WriteSPARSE_COLORImage(const ImageInfo *image_info,
-%        Image *image,ExceptionInfo *exception)
-%
-%  A description of each parameter follows.
-%
-%    o image_info: the image info.
-%
-%    o image:  The image.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-static MagickBooleanType WriteSPARSE_COLORImage(const ImageInfo *image_info,
-  Image *image,ExceptionInfo *exception)
-{
-  char
-    buffer[MaxTextExtent],
-    colorspace[MaxTextExtent],
-    tuple[MaxTextExtent];
-
-  MagickBooleanType
-    status;
-
-  MagickOffsetType
-    scene;
-
-  PixelInfo
-    pixel;
-
-  register const Quantum
-    *p;
-
-  register ssize_t
-    x;
-
-  ssize_t
-    y;
-
-  /*
-    Open output image file.
-  */
-  assert(image_info != (const ImageInfo *) NULL);
-  assert(image_info->signature == MagickSignature);
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  status=OpenBlob(image_info,image,WriteBlobMode,exception);
-  if (status == MagickFalse)
-    return(status);
-  scene=0;
-  do
-  {
-    (void) CopyMagickString(colorspace,CommandOptionToMnemonic(
-      MagickColorspaceOptions,(ssize_t) image->colorspace),MaxTextExtent);
-    LocaleLower(colorspace);
-    image->depth=GetImageQuantumDepth(image,MagickTrue);
-    if (image->alpha_trait == BlendPixelTrait)
-      (void) ConcatenateMagickString(colorspace,"a",MaxTextExtent);
-    GetPixelInfo(image,&pixel);
-    for (y=0; y < (ssize_t) image->rows; y++)
-    {
-      p=GetVirtualPixels(image,0,y,image->columns,1,exception);
-      if (p == (const Quantum *) NULL)
-        break;
-      for (x=0; x < (ssize_t) image->columns; x++)
-      {
-        GetPixelInfoPixel(image,p,&pixel);
-        if (pixel.colorspace == LabColorspace)
-          {
-            pixel.green-=(QuantumRange+1)/2.0;
-            pixel.blue-=(QuantumRange+1)/2.0;
-          }
-        /*
-          Sparse-color format.
-        */
-        if (GetPixelAlpha(image,p) == (Quantum) OpaqueAlpha)
-          {
-            (void) QueryColorname(image,&pixel,SVGCompliance,tuple,
-              exception);
-            (void) FormatLocaleString(buffer,MaxTextExtent,"%.20g,%.20g,",
-              (double) x,(double) y);
-            (void) WriteBlobString(image,buffer);
-            (void) WriteBlobString(image,tuple);
-            (void) WriteBlobString(image," ");
-          }
-        p+=GetPixelChannels(image);
-      }
-      status=SetImageProgress(image,SaveImageTag,(MagickOffsetType) y,
-        image->rows);
-      if (status == MagickFalse)
-        break;
-    }
-    if (GetNextImageInList(image) == (Image *) NULL)
-      break;
-    image=SyncNextImageInList(image);
-    status=SetImageProgress(image,SaveImagesTag,scene++,
-      GetImageListLength(image));
-    if (status == MagickFalse)
-      break;
-  } while (image_info->adjoin != MagickFalse);
-  (void) CloseBlob(image);
-  return(MagickTrue);
-}
diff --git a/coders/txt.c b/coders/txt.c
index 6aed029..4befbe0 100644
--- a/coders/txt.c
+++ b/coders/txt.c
@@ -10,7 +10,7 @@
 %                              T    X   X    T                                %
 %                                                                             %
 %                                                                             %
-%                       Read / Write image as ASCII Text.                     %
+%                      Render Text Onto A Canvas Image.                       %
 %                                                                             %
 %                              Software Design                                %
 %                                John Cristy                                  %
@@ -570,6 +570,13 @@
   MagickInfo
     *entry;
 
+  entry=SetMagickInfo("SPARSE-COLOR");
+  entry->encoder=(EncodeImageHandler *) WriteTXTImage;
+  entry->raw=MagickTrue;
+  entry->endian_support=MagickTrue;
+  entry->description=ConstantString("Sparse Color");
+  entry->module=ConstantString("TXT");
+  (void) RegisterMagickInfo(entry);
   entry=SetMagickInfo("TEXT");
   entry->decoder=(DecodeImageHandler *) ReadTXTImage;
   entry->encoder=(EncodeImageHandler *) WriteTXTImage;
@@ -609,6 +616,7 @@
 */
 ModuleExport void UnregisterTXTImage(void)
 {
+  (void) UnregisterMagickInfo("SPARSE-COLOR");
   (void) UnregisterMagickInfo("TEXT");
   (void) UnregisterMagickInfo("TXT");
 }
@@ -687,11 +695,14 @@
     image->depth=GetImageQuantumDepth(image,MagickTrue);
     if (image->alpha_trait == BlendPixelTrait)
       (void) ConcatenateMagickString(colorspace,"a",MaxTextExtent);
-    (void) FormatLocaleString(buffer,MaxTextExtent,
-      "# ImageMagick pixel enumeration: %.20g,%.20g,%.20g,%s\n",(double)
-      image->columns,(double) image->rows,(double)
-      GetQuantumRange(image->depth),colorspace);
-    (void) WriteBlobString(image,buffer);
+    if (LocaleCompare(image_info->magick,"SPARSE-COLOR") != 0)
+      {
+        (void) FormatLocaleString(buffer,MaxTextExtent,
+          "# ImageMagick pixel enumeration: %.20g,%.20g,%.20g,%s\n",(double)
+          image->columns,(double) image->rows,(double)
+          GetQuantumRange(image->depth),colorspace);
+        (void) WriteBlobString(image,buffer);
+      }
     GetPixelInfo(image,&pixel);
     for (y=0; y < (ssize_t) image->rows; y++)
     {
@@ -706,6 +717,24 @@
             pixel.green-=(QuantumRange+1)/2.0;
             pixel.blue-=(QuantumRange+1)/2.0;
           }
+        if (LocaleCompare(image_info->magick,"SPARSE-COLOR") == 0)
+          {
+            /*
+              Sparse-color format.
+            */
+            if (GetPixelAlpha(image,p) == (Quantum) OpaqueAlpha)
+              {
+                (void) QueryColorname(image,&pixel,SVGCompliance,tuple,
+                  exception);
+                (void) FormatLocaleString(buffer,MaxTextExtent,"%.20g,%.20g,",
+                  (double) x,(double) y);
+                (void) WriteBlobString(image,buffer);
+                (void) WriteBlobString(image,tuple);
+                (void) WriteBlobString(image," ");
+              }
+            p+=GetPixelChannels(image);
+            continue;
+          }
         (void) FormatLocaleString(buffer,MaxTextExtent,"%.20g,%.20g: ",(double)
           x,(double) y);
         (void) WriteBlobString(image,buffer);
diff --git a/configure b/configure
index 7643bf0..e3f9d2e 100755
--- a/configure
+++ b/configure
@@ -3675,7 +3675,7 @@
 
 MAGICK_VERSION=7.0.0-0
 
-MAGICK_SVN_REVISION=11302:11399M
+MAGICK_SVN_REVISION=11302:11401M
 
 
 # Substitute library versioning
