diff --git a/MagickCore/version.h b/MagickCore/version.h
index e3f8031..d268f16 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  "11008:11034M"
+#define MagickSVNRevision  "11008:11035M"
 #define MagickLibVersion  0x700
 #define MagickLibVersionText  "7.0.0"
 #define MagickLibVersionNumber  1,0,0
diff --git a/Makefile.in b/Makefile.in
index 748cd26..f7bc3c7 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -10684,12 +10684,21 @@
 	done
 
 # If source files missing, see if they can be obtained via VPATH
-perl-sources:
+#
+$(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.xs: $(PERLMAGICK)/quantum/quantum.xs
+	$(AM_V_GEN) $(LN_S) $(notdir $^) $@
+
+$(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.pm: $(PERLMAGICK)/quantum/quantum.pm
+	$(AM_V_GEN) $(LN_S) $(notdir $^) $@
+
+perl-quantum-sources: $(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.xs $(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.pm
+
+perl-sources: perl-quantum-sources
 	@if test -n "$(VPATH)" ; then \
 	  echo "Linking PerlMagick Sources ..." ; \
 	  imagemagick=`(cd $(VPATH) ; pwd)` && \
 	  ( cd $(PERLMAGICK) && \
-	    sh $$imagemagick/config/lndir.sh $$imagemagick/$(PERLMAGICK) ) \
+	    sh $$imagemagick/config/lndir.sh $$imagemagick/$(PERLMAGICK) ; ) \
 	fi ; \
 	touch perl-sources
 
@@ -10748,8 +10757,8 @@
 @WITH_PERL_TRUE@	( if test -f Makefile ; then $(MAKE) CC='@CC@' clean ; fi ) ; \
 @WITH_PERL_TRUE@	rm -f Makefile.old PerlMagick ; \
 @WITH_PERL_TRUE@	rm -f t/output* t/jng/*_tmp.jng t/*/output* ; \
-@WITH_PERL_TRUE@	rm -f QUANTUM/@MAGICK_ABI_SUFFIX@.xs;\
-@WITH_PERL_TRUE@	rm -f QUANTUM/@MAGICK_ABI_SUFFIX@.pm;\
+@WITH_PERL_TRUE@	rm -f quantum/@MAGICK_ABI_SUFFIX@.xs;\
+@WITH_PERL_TRUE@	rm -f quantum/@MAGICK_ABI_SUFFIX@.pm;\
 @WITH_PERL_TRUE@	rm -f Magick.pm;)
 @WITH_PERL_TRUE@	rm -f perl-sources
 
diff --git a/PerlMagick/Makefile.PL.in b/PerlMagick/Makefile.PL.in
index 3538d2f..23b7cd4 100644
--- a/PerlMagick/Makefile.PL.in
+++ b/PerlMagick/Makefile.PL.in
@@ -162,10 +162,10 @@
 
 # defaults for LIBS & INC & CCFLAGS params that we later pass to Writemakefile
 my $INC_magick = '-I../ -I@top_srcdir@ @CPPFLAGS@ -I"' . $Config{'usrinc'} . '/ImageMagick"';
-my $LIBS_magick = '-L../MagickCore/.libs -lMagickCore-@MAGICK_ABI_SUFFIX@ -lperl @MATH_LIBS@';
+my $LIBS_magick = '-L../MagickCore/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ -lperl @MATH_LIBS@';
 my $CCFLAGS_magick = "$Config{'ccflags'} @CFLAGS@";
-my $LDFLAGS_magick   = "-L../MagickCore/.libs -lMagickCore-@MAGICK_ABI_SUFFIX@ $Config{'ldflags'} @LDFLAGS@";
-my $LDDLFLAGS_magick = "-L../MagickCore/.libs -lMagickCore-@MAGICK_ABI_SUFFIX@ $Config{'lddlflags'} @LDFLAGS@";
+my $LDFLAGS_magick   = "-L../MagickCore/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ $Config{'ldflags'} @LDFLAGS@";
+my $LDDLFLAGS_magick = "-L../MagickCore/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ $Config{'lddlflags'} @LDFLAGS@";
 
 if (($^O eq 'MSWin32') && ($Config{cc} =~ /gcc/)) {
   my($Ipaths, $Lpaths) = AutodetectWin32gcc();
@@ -174,7 +174,7 @@
   # Setup for strawberry perl.
   #
   $INC_magick       = "$Ipaths";
-  $LIBS_magick      = "-lMagickCore-@MAGICK_ABI_SUFFIX@";
+  $LIBS_magick      = "-lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@";
   $CCFLAGS_magick   = "$Config{'ccflags'}";
   $LDFLAGS_magick   = "$Config{'ldflags'} $Lpaths ";
   $LDDLFLAGS_magick = "$Config{'lddlflags'} $Lpaths ";
diff --git a/PerlMagick/Makefile.am b/PerlMagick/Makefile.am
index c23795d..51a4e74 100644
--- a/PerlMagick/Makefile.am
+++ b/PerlMagick/Makefile.am
@@ -17,12 +17,21 @@
 #  Makefile for building PerlMagick.
 
 # If source files missing, see if they can be obtained via VPATH
-perl-sources:
+#
+$(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.xs: $(PERLMAGICK)/quantum/quantum.xs
+	$(AM_V_GEN) $(LN_S) $(notdir $^) $@
+
+$(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.pm: $(PERLMAGICK)/quantum/quantum.pm
+	$(AM_V_GEN) $(LN_S) $(notdir $^) $@
+
+perl-quantum-sources: $(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.xs $(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.pm
+
+perl-sources: perl-quantum-sources
 	@if test -n "$(VPATH)" ; then \
 	  echo "Linking PerlMagick Sources ..." ; \
 	  imagemagick=`(cd $(VPATH) ; pwd)` && \
 	  ( cd $(PERLMAGICK) && \
-	    sh $$imagemagick/config/lndir.sh $$imagemagick/$(PERLMAGICK) ) \
+	    sh $$imagemagick/config/lndir.sh $$imagemagick/$(PERLMAGICK) ; ) \
 	fi ; \
 	touch perl-sources
 
@@ -111,8 +120,8 @@
 	( if test -f Makefile ; then $(MAKE) CC='@CC@' clean ; fi ) ; \
 	rm -f Makefile.old PerlMagick ; \
 	rm -f t/output* t/jng/*_tmp.jng t/*/output* ; \
-	rm -f QUANTUM/@MAGICK_ABI_SUFFIX@.xs;\
-	rm -f QUANTUM/@MAGICK_ABI_SUFFIX@.pm;\
+	rm -f quantum/@MAGICK_ABI_SUFFIX@.xs;\
+	rm -f quantum/@MAGICK_ABI_SUFFIX@.pm;\
 	rm -f Magick.pm;)
 	rm -f perl-sources
 
diff --git a/PerlMagick/quantum/Makefile.PL b/PerlMagick/quantum/Makefile.PL
index f608b70..1bec80b 100644
--- a/PerlMagick/quantum/Makefile.PL
+++ b/PerlMagick/quantum/Makefile.PL
@@ -162,10 +162,10 @@
 
 # defaults for LIBS & INC & CCFLAGS params that we later pass to Writemakefile
 my $INC_magick = '-I../ -I../.. -pthread -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/libdrm -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/usr/include/libxml2 -I"' . $Config{'usrinc'} . '/ImageMagick"';
-my $LIBS_magick = '-L../../MagickCore/.libs -lMagickCore7-Q16HDRI -lperl -lm';
+my $LIBS_magick = '-L../../MagickCore/.libs -lMagickCore-7.Q16HDRI -lperl -lm';
 my $CCFLAGS_magick = "$Config{'ccflags'} -I/usr/include/freetype2 -fopenmp -g -O2 -Wall -pthread -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16";
-my $LDFLAGS_magick   = "-L../../MagickCore/.libs -lMagickCore7-Q16HDRI $Config{'ldflags'} ";
-my $LDDLFLAGS_magick = "-L../../MagickCore/.libs -lMagickCore7-Q16HDRI $Config{'lddlflags'} ";
+my $LDFLAGS_magick   = "-L../../MagickCore/.libs -lMagickCore-7.Q16HDRI $Config{'ldflags'} ";
+my $LDDLFLAGS_magick = "-L../../MagickCore/.libs -lMagickCore-7.Q16HDRI $Config{'lddlflags'} ";
 
 if (($^O eq 'MSWin32') && ($Config{cc} =~ /gcc/)) {
   my($Ipaths, $Lpaths) = AutodetectWin32gcc();
@@ -174,7 +174,7 @@
   # Setup for strawberry perl.
   #
   $INC_magick       = "$Ipaths";
-  $LIBS_magick      = "-lMagickCore7-Q16HDRI";
+  $LIBS_magick      = "-lMagickCore-7.Q16HDRI";
   $CCFLAGS_magick   = "$Config{'ccflags'}";
   $LDFLAGS_magick   = "$Config{'ldflags'} $Lpaths ";
   $LDDLFLAGS_magick = "$Config{'lddlflags'} $Lpaths ";
diff --git a/PerlMagick/quantum/Makefile.PL.in b/PerlMagick/quantum/Makefile.PL.in
index dd78663..0bc9f44 100644
--- a/PerlMagick/quantum/Makefile.PL.in
+++ b/PerlMagick/quantum/Makefile.PL.in
@@ -162,10 +162,10 @@
 
 # defaults for LIBS & INC & CCFLAGS params that we later pass to Writemakefile
 my $INC_magick = '-I../ -I@top_srcdir@ @CPPFLAGS@ -I"' . $Config{'usrinc'} . '/ImageMagick"';
-my $LIBS_magick = '-L../../MagickCore/.libs -lMagickCore@MAGICK_MAJOR_VERSION@-@MAGICK_ABI_SUFFIX@ -lperl @MATH_LIBS@';
+my $LIBS_magick = '-L../../MagickCore/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ -lperl @MATH_LIBS@';
 my $CCFLAGS_magick = "$Config{'ccflags'} @CFLAGS@";
-my $LDFLAGS_magick   = "-L../../MagickCore/.libs -lMagickCore@MAGICK_MAJOR_VERSION@-@MAGICK_ABI_SUFFIX@ $Config{'ldflags'} @LDFLAGS@";
-my $LDDLFLAGS_magick = "-L../../MagickCore/.libs -lMagickCore@MAGICK_MAJOR_VERSION@-@MAGICK_ABI_SUFFIX@ $Config{'lddlflags'} @LDFLAGS@";
+my $LDFLAGS_magick   = "-L../../MagickCore/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ $Config{'ldflags'} @LDFLAGS@";
+my $LDDLFLAGS_magick = "-L../../MagickCore/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ $Config{'lddlflags'} @LDFLAGS@";
 
 if (($^O eq 'MSWin32') && ($Config{cc} =~ /gcc/)) {
   my($Ipaths, $Lpaths) = AutodetectWin32gcc();
@@ -174,7 +174,7 @@
   # Setup for strawberry perl.
   #
   $INC_magick       = "$Ipaths";
-  $LIBS_magick      = "-lMagickCore@MAGICK_MAJOR_VERSION@-@MAGICK_ABI_SUFFIX@";
+  $LIBS_magick      = "-lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@";
   $CCFLAGS_magick   = "$Config{'ccflags'}";
   $LDFLAGS_magick   = "$Config{'ldflags'} $Lpaths ";
   $LDDLFLAGS_magick = "$Config{'lddlflags'} $Lpaths ";
diff --git a/PerlMagick/t/filter.t b/PerlMagick/t/filter.t
index 6701574..ad619c8 100644
--- a/PerlMagick/t/filter.t
+++ b/PerlMagick/t/filter.t
@@ -28,7 +28,7 @@
 autoflush STDOUT 1;
 autoflush STDERR 1;
 
-$fuzz=int(0.0*QuantumRange);
+$fuzz=int(0.05*(Image::Magick->new()->QuantumRange));
 
 testFilterCompare('input.miff',  q//, 'reference/filter/AdaptiveThreshold.miff', 'AdaptiveThreshold', q/'5x5+5%'/, 0.0, 0.0);
 ++$test;
diff --git a/PerlMagick/t/subroutines.pl b/PerlMagick/t/subroutines.pl
index 4463fbc..b99c4f0 100644
--- a/PerlMagick/t/subroutines.pl
+++ b/PerlMagick/t/subroutines.pl
@@ -182,11 +182,11 @@
       $ref_32 = $ref_16;
     }
 
-  if (QuantumDepth == 32)
+  if (Image::Magick->new()->QuantumDepth == 32)
     {
       $ref_signature=$ref_32;
     }
-  elsif (QuantumDepth == 16)
+  elsif (Image::Magick->new()->QuantumDepth == 16)
     {
       $ref_signature=$ref_16;
     }
@@ -223,7 +223,7 @@
        	print "Image: $infile, signatures do not match.\n";
       	print "     Expected: $ref_signature\n";
       	print "     Computed: $signature\n";
-        print "     Depth:    ", QuantumDepth, "\n";
+        print "     Depth:    ", Image::Magick->new()->QuantumDepth, "\n";
         ++$failure;
         $image->Display();
       }
@@ -261,7 +261,7 @@
               print "Image: $infile, signatures do not match.\n";
               print "     Expected: $ref_signature\n";
               print "     Computed: $signature\n";
-              print "     Depth:    ", QuantumDepth, "\n";
+              print "     Depth:    ", Image::Magick->new()->QuantumDepth, "\n";
               #$image->Display();
               ++$failure;
             }
@@ -420,11 +420,11 @@
       $ref_32 = $ref_16;
     }
 
-  if (QuantumDepth == 32)
+  if (Image::Magick->new()->QuantumDepth == 32)
     {
       $ref_signature=$ref_32;
     }
-  elsif (QuantumDepth == 16)
+  elsif (Image::Magick->new()->QuantumDepth == 16)
     {
       $ref_signature=$ref_16;
     }
@@ -440,8 +440,8 @@
   warn "$status" if "$status";
 
   # If depth is not zero, then set it
-  if ( QuantumDepth != 0 ) {
-    $status=$image->SetAttribute(depth=>QuantumDepth);
+  if ( Image::Magick->new()->QuantumDepth != 0 ) {
+    $status=$image->SetAttribute(depth=>Image::Magick->new()->QuantumDepth);
     warn "$status" if "$status";
   }
 
@@ -456,7 +456,7 @@
       	print "Image: $infile, signatures do not match.\n";
       	print "     Expected: $ref_signature\n";
       	print "     Computed: $signature\n";
-        print "     Depth:    ", QuantumDepth, "\n";
+        print "     Depth:    ", Image::Magick->new()->QuantumDepth, "\n";
         print "not ok $test\n";
         #$image->Display();
       } else {
@@ -494,11 +494,11 @@
       $ref_32 = $ref_16;
     }
 
-  if (QuantumDepth == 32)
+  if (Image::Magick->new()->QuantumDepth == 32)
     {
       $ref_signature=$ref_32;
     }
-  elsif (QuantumDepth == 16)
+  elsif (Image::Magick->new()->QuantumDepth == 16)
     {
       $ref_signature=$ref_16;
     }
@@ -543,7 +543,7 @@
           print "Image: $infile, signatures do not match.\n";
           print "     Expected: $ref_signature\n";
           print "     Computed: $signature\n";
-          print "     Depth:    ", QuantumDepth, "\n";
+          print "     Depth:    ", Image::Magick->new()->QuantumDepth, "\n";
           print "not ok $test\n";
           $image->Display();
         } else {
@@ -785,11 +785,11 @@
       $ref_32 = $ref_16;
     }
 
-  if (QuantumDepth == 32)
+  if (Image::Magick->new()->QuantumDepth == 32)
     {
       $ref_signature=$ref_32;
     }
-  elsif (QuantumDepth == 16)
+  elsif (Image::Magick->new()->QuantumDepth == 16)
     {
       $ref_signature=$ref_16;
     }
@@ -856,7 +856,7 @@
           print "Image: $infile, signatures do not match.\n";
           print "     Expected: $ref_signature\n";
           print "     Computed: $signature\n";
-          print "     Depth:    ", QuantumDepth, "\n";
+          print "     Depth:    ", Image::Magick->new()->QuantumDepth, "\n";
           print "not ok $test\n";
           #$image->Display();
         } else {
@@ -969,11 +969,11 @@
       $ref_32 = $ref_16;
     }
 
-  if (QuantumDepth == 32)
+  if (Image::Magick->new()->QuantumDepth == 32)
     {
       $ref_signature=$ref_32;
     }
-  elsif (QuantumDepth == 16)
+  elsif (Image::Magick->new()->QuantumDepth == 16)
     {
       $ref_signature=$ref_16;
     }
@@ -1042,7 +1042,7 @@
         print "Test $test, signatures do not match.\n";
       	print "     Expected: $ref_signature\n";
       	print "     Computed: $signature\n";
-        print "     Depth:    ", QuantumDepth, "\n";
+        print "     Depth:    ", Image::Magick->new()->QuantumDepth, "\n";
         $status = $montage->Write("test_${test}_out.miff");
         warn "Write: $status" if "$status";
           
@@ -1100,11 +1100,11 @@
       $ref_32 = $ref_16;
     }
 
-  if (QuantumDepth == 32)
+  if (Image::Magick->new()->QuantumDepth == 32)
     {
       $ref_signature=$ref_32;
     }
-  elsif (QuantumDepth == 16)
+  elsif (Image::Magick->new()->QuantumDepth == 16)
     {
       $ref_signature=$ref_16;
     }
@@ -1129,7 +1129,7 @@
       print "Test $test, signatures do not match.\n";
       print "     Expected: $ref_signature\n";
       print "     Computed: $signature\n";
-      print "     Depth:    ", QuantumDepth, "\n";
+      print "     Depth:    ", Image::Magick->new()->QuantumDepth, "\n";
       #$image->Display();
       print "not ok $test\n";
     } else {
diff --git a/configure b/configure
index 993b112..740e06b 100755
--- a/configure
+++ b/configure
@@ -3668,7 +3668,7 @@
 
 MAGICK_VERSION=7.0.0-0
 
-MAGICK_SVN_REVISION=11008:11034M
+MAGICK_SVN_REVISION=11008:11035M
 
 
 # Substitute library versioning
