diff --git a/Makefile.in b/Makefile.in
index e0e4674..cd52c02 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -949,7 +949,7 @@
 	$@
 @DJVU_DELEGATE_TRUE@@WITH_MODULES_TRUE@am_coders_djvu_la_rpath =  \
 @DJVU_DELEGATE_TRUE@@WITH_MODULES_TRUE@	-rpath $(codersdir)
-coders_dng_la_DEPENDENCIES = $(MAGICKCORE_LIBS) $(am__DEPENDENCIES_1)
+coders_dng_la_DEPENDENCIES = $(MAGICKCORE_LIBS)
 am_coders_dng_la_OBJECTS = coders/coders_dng_la-dng.lo
 coders_dng_la_OBJECTS = $(am_coders_dng_la_OBJECTS)
 coders_dng_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
@@ -2758,8 +2758,8 @@
 RANLIB = @RANLIB@
 RAQM_CFLAGS = @RAQM_CFLAGS@
 RAQM_LIBS = @RAQM_LIBS@
-RAW_CFLAGS = @RAW_CFLAGS@
-RAW_LIBS = @RAW_LIBS@
+RAW_R_CFLAGS = @RAW_R_CFLAGS@
+RAW_R_LIBS = @RAW_R_LIBS@
 RMDelegate = @RMDelegate@
 RPM = @RPM@
 RSVGDecodeDelegate = @RSVGDecodeDelegate@
diff --git a/coders/dng.c b/coders/dng.c
index ae56776..71fbabf 100644
--- a/coders/dng.c
+++ b/coders/dng.c
@@ -53,9 +53,12 @@
 #include "MagickCore/log.h"
 #include "MagickCore/magick.h"
 #include "MagickCore/memory_.h"
+#include "MagickCore/monitor.h"
+#include "MagickCore/monitor-private.h"
 #include "MagickCore/opencl.h"
-#include "MagickCore/resource_.h"
+#include "MagickCore/pixel-accessor.h"
 #include "MagickCore/quantum-private.h"
+#include "MagickCore/resource_.h"
 #include "MagickCore/static.h"
 #include "MagickCore/string_.h"
 #include "MagickCore/module.h"
@@ -183,9 +186,108 @@
       return((Image *) NULL);
     }
   (void) CloseBlob(image);
-  (void) DestroyImageList(image);
 #if defined(MAGICKCORE_RAW_DELEGATE)
+  {
+    int
+      status;
+
+    libraw_data_t
+      *raw_info;
+
+    libraw_processed_image_t
+      *raw_image;
+
+    register ssize_t
+      y;
+
+    unsigned short
+      *p;
+
+    status=0;
+    raw_info=libraw_init(0);
+    if (raw_info == (libraw_data_t *) NULL)
+      {
+        (void) ThrowMagickException(exception,GetMagickModule(),CoderError,
+          libraw_strerror(status),"`%s'",image->filename);
+        return(DestroyImageList(image));
+      }
+    status=libraw_open_file(raw_info,image->filename);
+    if (status != LIBRAW_SUCCESS)
+      {
+        (void) ThrowMagickException(exception,GetMagickModule(),CoderError,
+          libraw_strerror(status),"`%s'",image->filename);
+        return(DestroyImageList(image));
+      }
+    status=libraw_unpack(raw_info);
+    if (status != LIBRAW_SUCCESS)
+      {
+        libraw_close(raw_info);
+        (void) ThrowMagickException(exception,GetMagickModule(),CoderError,
+          libraw_strerror(status),"`%s'",image->filename);
+        return(DestroyImageList(image));
+      }
+    raw_info->params.output_bps=16;
+    status=libraw_dcraw_process(raw_info);
+    if (status != LIBRAW_SUCCESS)
+      {
+        libraw_close(raw_info);
+        (void) ThrowMagickException(exception,GetMagickModule(),CoderError,
+          libraw_strerror(status),"`%s'",image->filename);
+        return(DestroyImageList(image));
+      }
+    raw_image=libraw_dcraw_make_mem_image(raw_info,&status);
+    if (status != LIBRAW_SUCCESS)
+      {
+        libraw_close(raw_info);
+        (void) ThrowMagickException(exception,GetMagickModule(),CoderError,
+          libraw_strerror(status),"`%s'",image->filename);
+        return(DestroyImageList(image));
+      }
+    image->columns=raw_image->width;
+    image->rows=raw_image->height;
+    image->depth=16;
+    status=SetImageExtent(image,image->columns,image->rows,exception);
+    if (status == MagickFalse)
+      {
+        libraw_dcraw_clear_mem(raw_image);
+        libraw_close(raw_info);
+        return(DestroyImageList(image));
+      }
+    p=(unsigned short *) raw_image->data;
+    for (y=0; y < (ssize_t) image->rows; y++)
+    {
+      register Quantum
+        *q;
+
+      register ssize_t
+        x;
+
+      q=QueueAuthenticPixels(image,0,y,image->columns,1,exception);
+      if (q == (Quantum *) NULL)
+        break;
+      for (x=0; x < (ssize_t) image->columns; x++)
+      {
+        SetPixelRed(image,ScaleShortToQuantum(*p++),q);
+        SetPixelGreen(image,ScaleShortToQuantum(*p++),q);
+        SetPixelBlue(image,ScaleShortToQuantum(*p++),q);
+        q+=GetPixelChannels(image);
+      }
+      if (SyncAuthenticPixels(image,exception) == MagickFalse)
+        break;
+      if (image->previous == (Image *) NULL)
+        {
+          status=SetImageProgress(image,LoadImageTag,(MagickOffsetType) y,
+            image->rows);
+          if (status == MagickFalse)
+            break;
+        }
+    }
+    libraw_dcraw_clear_mem(raw_image);
+    libraw_close(raw_info);
+    return(image);
+  }
 #endif
+  (void) DestroyImageList(image);
   /*
     Convert DNG to PPM with delegate.
   */
@@ -384,7 +486,8 @@
   entry->flags^=CoderBlobSupportFlag;
   entry->format_type=ExplicitFormatType;
   (void) RegisterMagickInfo(entry);
-  entry=AcquireMagickInfo("DNG","NRW","Nikon Digital SLR Camera Raw Image File");
+  entry=AcquireMagickInfo("DNG","NRW",
+    "Nikon Digital SLR Camera Raw Image File");
   entry->decoder=(DecodeImageHandler *) ReadDNGImage;
   entry->flags|=CoderDecoderSeekableStreamFlag;
   entry->flags^=CoderBlobSupportFlag;
diff --git a/config/config.h.in b/config/config.h.in
index 17437bf..15cbf9d 100644
--- a/config/config.h.in
+++ b/config/config.h.in
@@ -842,7 +842,7 @@
 #undef RAQM_DELEGATE
 
 /* Define if you have LIBRAW library */
-#undef RAW_DELEGATE
+#undef RAW_R_DELEGATE
 
 /* Define as the return type of signal handlers (`int' or `void'). */
 #undef RETSIGTYPE
diff --git a/configure b/configure
index 3eb2872..71c2774 100755
--- a/configure
+++ b/configure
@@ -773,10 +773,10 @@
 CAIRO_SVG_CFLAGS
 RSVG_LIBS
 RSVG_CFLAGS
-RAW_DELEGATE_FALSE
-RAW_DELEGATE_TRUE
-RAW_LIBS
-RAW_CFLAGS
+RAW_R_DELEGATE_FALSE
+RAW_R_DELEGATE_TRUE
+RAW_R_LIBS
+RAW_R_CFLAGS
 PNG_DELEGATE_FALSE
 PNG_DELEGATE_TRUE
 PNG_LIBS
@@ -1278,8 +1278,8 @@
 PANGO_LIBS
 PNG_CFLAGS
 PNG_LIBS
-RAW_CFLAGS
-RAW_LIBS
+RAW_R_CFLAGS
+RAW_R_LIBS
 RSVG_CFLAGS
 RSVG_LIBS
 CAIRO_SVG_CFLAGS
@@ -2100,8 +2100,9 @@
   PANGO_LIBS  linker flags for PANGO, overriding pkg-config
   PNG_CFLAGS  C compiler flags for PNG, overriding pkg-config
   PNG_LIBS    linker flags for PNG, overriding pkg-config
-  RAW_CFLAGS  C compiler flags for RAW, overriding pkg-config
-  RAW_LIBS    linker flags for RAW, overriding pkg-config
+  RAW_R_CFLAGS
+              C compiler flags for RAW_R, overriding pkg-config
+  RAW_R_LIBS  linker flags for RAW_R, overriding pkg-config
   RSVG_CFLAGS C compiler flags for RSVG, overriding pkg-config
   RSVG_LIBS   linker flags for RSVG, overriding pkg-config
   CAIRO_SVG_CFLAGS
@@ -4529,7 +4530,7 @@
 
 MAGICK_VERSION=7.0.6-1
 
-MAGICK_GIT_REVISION=20424:dc427a01e:20170714
+MAGICK_GIT_REVISION=20425:6805f410d:20170714
 
 
 # Substitute library versioning
@@ -33727,27 +33728,27 @@
 fi
 
 have_raw='no'
-RAW_CFLAGS=""
-RAW_LIBS=""
-RAW_PKG=""
+RAW_R_CFLAGS=""
+RAW_R_LIBS=""
+RAW_R_PKG=""
 if test "x$with_raw" = "xyes"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: -------------------------------------------------------------" >&5
 $as_echo "-------------------------------------------------------------" >&6; }
 
 pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RAW" >&5
-$as_echo_n "checking for RAW... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RAW_R" >&5
+$as_echo_n "checking for RAW_R... " >&6; }
 
-if test -n "$RAW_CFLAGS"; then
-    pkg_cv_RAW_CFLAGS="$RAW_CFLAGS"
+if test -n "$RAW_R_CFLAGS"; then
+    pkg_cv_RAW_R_CFLAGS="$RAW_R_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libraw >= 0.14.8\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libraw >= 0.14.8") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libraw_r >= 0.14.8\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libraw_r >= 0.14.8") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_RAW_CFLAGS=`$PKG_CONFIG --cflags "libraw >= 0.14.8" 2>/dev/null`
+  pkg_cv_RAW_R_CFLAGS=`$PKG_CONFIG --cflags "libraw_r >= 0.14.8" 2>/dev/null`
 		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -33755,16 +33756,16 @@
  else
     pkg_failed=untried
 fi
-if test -n "$RAW_LIBS"; then
-    pkg_cv_RAW_LIBS="$RAW_LIBS"
+if test -n "$RAW_R_LIBS"; then
+    pkg_cv_RAW_R_LIBS="$RAW_R_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libraw >= 0.14.8\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libraw >= 0.14.8") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libraw_r >= 0.14.8\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libraw_r >= 0.14.8") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_RAW_LIBS=`$PKG_CONFIG --libs "libraw >= 0.14.8" 2>/dev/null`
+  pkg_cv_RAW_R_LIBS=`$PKG_CONFIG --libs "libraw_r >= 0.14.8" 2>/dev/null`
 		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -33785,12 +33786,12 @@
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        RAW_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libraw >= 0.14.8" 2>&1`
+	        RAW_R_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libraw_r >= 0.14.8" 2>&1`
         else
-	        RAW_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libraw >= 0.14.8" 2>&1`
+	        RAW_R_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libraw_r >= 0.14.8" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
-	echo "$RAW_PKG_ERRORS" >&5
+	echo "$RAW_R_PKG_ERRORS" >&5
 
 	have_raw=no
 elif test $pkg_failed = untried; then
@@ -33798,8 +33799,8 @@
 $as_echo "no" >&6; }
 	have_raw=no
 else
-	RAW_CFLAGS=$pkg_cv_RAW_CFLAGS
-	RAW_LIBS=$pkg_cv_RAW_LIBS
+	RAW_R_CFLAGS=$pkg_cv_RAW_R_CFLAGS
+	RAW_R_LIBS=$pkg_cv_RAW_R_LIBS
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 	have_raw=yes
@@ -33810,17 +33811,17 @@
 
 if test "$have_raw" = 'yes'; then
 
-$as_echo "#define RAW_DELEGATE 1" >>confdefs.h
+$as_echo "#define RAW_R_DELEGATE 1" >>confdefs.h
 
-  CFLAGS="$RAW_CFLAGS $CFLAGS"
+  CFLAGS="$RAW_R_CFLAGS $CFLAGS"
 fi
 
  if test "$have_raw" = 'yes'; then
-  RAW_DELEGATE_TRUE=
-  RAW_DELEGATE_FALSE='#'
+  RAW_R_DELEGATE_TRUE=
+  RAW_R_DELEGATE_FALSE='#'
 else
-  RAW_DELEGATE_TRUE='#'
-  RAW_DELEGATE_FALSE=
+  RAW_R_DELEGATE_TRUE='#'
+  RAW_R_DELEGATE_FALSE=
 fi
 
 
@@ -37764,7 +37765,7 @@
 if test "$build_modules" != 'no'; then
     MAGICK_DEP_LIBS="$USER_LIBS $LCMS_LIBS $FREETYPE_LIBS $RAQM_LIBS $LQR_LIBS $FFTW_LIBS $FLIF_LIBS $FONTCONFIG_LIBS $XEXT_LIBS $IPC_LIBS $X11_LIBS $XT_LIBS $LZMA_LIBS $BZLIB_LIBS $ZLIB_LIBS $LTDL_LIBS $GDI32_LIBS $MATH_LIBS $GOMP_LIBS $CL_LIBS $UMEM_LIBS $JEMALLOC_LIBS $THREAD_LIBS"
 else
-    MAGICK_DEP_LIBS="$USER_LIBS $JBIG_LIBS $LCMS_LIBS $TIFF_LIBS $FREETYPE_LIBS $RAQM_LIBS $JPEG_LIBS $GS_LIBS $LQR_LIBS $PNG_LIBS $AUTOTRACE_LIBS $DJVU_LIBS $FFTW_LIBS $FLIF_LIBS $FPX_LIBS $FONTCONFIG_LIBS $WEBP_LIBS $WMF_LIBS $DPS_LIBS $XEXT_LIBS $XT_LIBS $IPC_LIBS $X11_LIBS $LZMA_LIBS $BZLIB_LIBS $OPENEXR_LIBS $LIBOPENJP2_LIBS $PANGO_LIBS $RAW_LIBS $RSVG_LIBS $XML_LIBS $GVC_LIBS $ZLIB_LIBS $GDI32_LIBS $MATH_LIBS $GOMP_LIBS $CL_LIBS $UMEM_LIBS $JEMALLOC_LIBS $THREAD_LIBS"
+    MAGICK_DEP_LIBS="$USER_LIBS $JBIG_LIBS $LCMS_LIBS $TIFF_LIBS $FREETYPE_LIBS $RAQM_LIBS $JPEG_LIBS $GS_LIBS $LQR_LIBS $PNG_LIBS $AUTOTRACE_LIBS $DJVU_LIBS $FFTW_LIBS $FLIF_LIBS $FPX_LIBS $FONTCONFIG_LIBS $WEBP_LIBS $WMF_LIBS $DPS_LIBS $XEXT_LIBS $XT_LIBS $IPC_LIBS $X11_LIBS $LZMA_LIBS $BZLIB_LIBS $OPENEXR_LIBS $LIBOPENJP2_LIBS $PANGO_LIBS $RAW_R_LIBS $RSVG_LIBS $XML_LIBS $GVC_LIBS $ZLIB_LIBS $GDI32_LIBS $MATH_LIBS $GOMP_LIBS $CL_LIBS $UMEM_LIBS $JEMALLOC_LIBS $THREAD_LIBS"
 fi
 
 
@@ -38135,8 +38136,8 @@
   as_fn_error $? "conditional \"PNG_DELEGATE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${RAW_DELEGATE_TRUE}" && test -z "${RAW_DELEGATE_FALSE}"; then
-  as_fn_error $? "conditional \"RAW_DELEGATE\" was never defined.
+if test -z "${RAW_R_DELEGATE_TRUE}" && test -z "${RAW_R_DELEGATE_FALSE}"; then
+  as_fn_error $? "conditional \"RAW_R_DELEGATE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${RSVG_DELEGATE_TRUE}" && test -z "${RSVG_DELEGATE_FALSE}"; then
diff --git a/configure.ac b/configure.ac
index 40c6719..e7420f7f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2609,23 +2609,23 @@
 fi
 
 have_raw='no'
-RAW_CFLAGS=""
-RAW_LIBS=""
-RAW_PKG=""
+RAW_R_CFLAGS=""
+RAW_R_LIBS=""
+RAW_R_PKG=""
 if test "x$with_raw" = "xyes"; then
   AC_MSG_RESULT([-------------------------------------------------------------])
-  PKG_CHECK_MODULES(RAW,[libraw >= 0.14.8], have_raw=yes, have_raw=no)
+  PKG_CHECK_MODULES(RAW_R,[libraw_r >= 0.14.8], have_raw=yes, have_raw=no)
   AC_MSG_RESULT([])
 fi
 
 if test "$have_raw" = 'yes'; then
-  AC_DEFINE(RAW_DELEGATE,1,Define if you have LIBRAW library)
-  CFLAGS="$RAW_CFLAGS $CFLAGS"
+  AC_DEFINE(RAW_R_DELEGATE,1,Define if you have LIBRAW library)
+  CFLAGS="$RAW_R_CFLAGS $CFLAGS"
 fi
 
-AM_CONDITIONAL(RAW_DELEGATE, test "$have_raw" = 'yes')
-AC_SUBST(RAW_CFLAGS)
-AC_SUBST(RAW_LIBS)
+AM_CONDITIONAL(RAW_R_DELEGATE, test "$have_raw" = 'yes')
+AC_SUBST(RAW_R_CFLAGS)
+AC_SUBST(RAW_R_LIBS)
 
 dnl ===========================================================================
 
@@ -3802,7 +3802,7 @@
 if test "$build_modules" != 'no'; then
     MAGICK_DEP_LIBS="$USER_LIBS $LCMS_LIBS $FREETYPE_LIBS $RAQM_LIBS $LQR_LIBS $FFTW_LIBS $FLIF_LIBS $FONTCONFIG_LIBS $XEXT_LIBS $IPC_LIBS $X11_LIBS $XT_LIBS $LZMA_LIBS $BZLIB_LIBS $ZLIB_LIBS $LTDL_LIBS $GDI32_LIBS $MATH_LIBS $GOMP_LIBS $CL_LIBS $UMEM_LIBS $JEMALLOC_LIBS $THREAD_LIBS"
 else
-    MAGICK_DEP_LIBS="$USER_LIBS $JBIG_LIBS $LCMS_LIBS $TIFF_LIBS $FREETYPE_LIBS $RAQM_LIBS $JPEG_LIBS $GS_LIBS $LQR_LIBS $PNG_LIBS $AUTOTRACE_LIBS $DJVU_LIBS $FFTW_LIBS $FLIF_LIBS $FPX_LIBS $FONTCONFIG_LIBS $WEBP_LIBS $WMF_LIBS $DPS_LIBS $XEXT_LIBS $XT_LIBS $IPC_LIBS $X11_LIBS $LZMA_LIBS $BZLIB_LIBS $OPENEXR_LIBS $LIBOPENJP2_LIBS $PANGO_LIBS $RAW_LIBS $RSVG_LIBS $XML_LIBS $GVC_LIBS $ZLIB_LIBS $GDI32_LIBS $MATH_LIBS $GOMP_LIBS $CL_LIBS $UMEM_LIBS $JEMALLOC_LIBS $THREAD_LIBS"
+    MAGICK_DEP_LIBS="$USER_LIBS $JBIG_LIBS $LCMS_LIBS $TIFF_LIBS $FREETYPE_LIBS $RAQM_LIBS $JPEG_LIBS $GS_LIBS $LQR_LIBS $PNG_LIBS $AUTOTRACE_LIBS $DJVU_LIBS $FFTW_LIBS $FLIF_LIBS $FPX_LIBS $FONTCONFIG_LIBS $WEBP_LIBS $WMF_LIBS $DPS_LIBS $XEXT_LIBS $XT_LIBS $IPC_LIBS $X11_LIBS $LZMA_LIBS $BZLIB_LIBS $OPENEXR_LIBS $LIBOPENJP2_LIBS $PANGO_LIBS $RAW_R_LIBS $RSVG_LIBS $XML_LIBS $GVC_LIBS $ZLIB_LIBS $GDI32_LIBS $MATH_LIBS $GOMP_LIBS $CL_LIBS $UMEM_LIBS $JEMALLOC_LIBS $THREAD_LIBS"
 fi
 AC_SUBST(MAGICK_DEP_LIBS)
 
