diff --git a/MagickWand/operation.c b/MagickWand/operation.c
index c721b85..44b4c44 100644
--- a/MagickWand/operation.c
+++ b/MagickWand/operation.c
@@ -4384,27 +4384,29 @@
           new_images=SimilarityImage(base_image,compare_image,metric,0.0,
             &offset,&similarity,_exception);
 
-          if ( new_images != (Image *) NULL ) {
-            char
-              result[MagickPathExtent];
+          if (new_images != (Image *) NULL)
+            {
+              char
+                result[MagickPathExtent];
 
-            (void) FormatLocaleString(result,MagickPathExtent,"%lf",similarity);
-            (void) SetImageProperty(new_images,"subimage:similarity",result,
-                 _exception);
-            (void) FormatLocaleString(result,MagickPathExtent,"%+ld",
-                (long) offset.x);
-            (void) SetImageProperty(new_images,"subimage:x",result,
-                 _exception);
-            (void) FormatLocaleString(result,MagickPathExtent,"%+ld",
-                (long) offset.y);
-            (void) SetImageProperty(new_images,"subimage:y",result,
-                 _exception);
-            (void) FormatLocaleString(result,MagickPathExtent,"%lux%lu%+ld%+ld",
-                (unsigned long) offset.width,(unsigned long) offset.height,
-                (long) offset.x,(long) offset.y);
-            (void) SetImageProperty(new_images,"subimage:offset",result,
-                 _exception);
-          }
+              (void) FormatLocaleString(result,MagickPathExtent,"%lf",
+                similarity);
+              (void) SetImageProperty(new_images,"subimage:similarity",result,
+                _exception);
+              (void) FormatLocaleString(result,MagickPathExtent,"%+ld",(long)
+                offset.x);
+              (void) SetImageProperty(new_images,"subimage:x",result,
+                _exception);
+              (void) FormatLocaleString(result,MagickPathExtent,"%+ld",(long)
+                offset.y);
+              (void) SetImageProperty(new_images,"subimage:y",result,
+                _exception);
+              (void) FormatLocaleString(result,MagickPathExtent,
+                "%lux%lu%+ld%+ld",(unsigned long) offset.width,(unsigned long)
+                offset.height,(long) offset.x,(long) offset.y);
+              (void) SetImageProperty(new_images,"subimage:offset",result,
+                _exception);
+            }
           break;
         }
       if (LocaleCompare("swap",option+1) == 0)
diff --git a/www/api/magick-geometry.html b/www/api/magick-geometry.html
new file mode 100644
index 0000000..cd98c57
--- /dev/null
+++ b/www/api/magick-geometry.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <title>ImageMagick: MagickWand, C API for ImageMagick: Image Methods</title>
+  <meta http-equiv="content-language" content="en-US">
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <meta http-equiv="reply-to" content="magick-users@imagemagick.org">
+  <meta name="application-name" content="ImageMagick">
+  <meta name="description" content="ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.">
+  <meta name="application-url" content="http://www.imagemagick.org">
+  <meta name="generator" content="PHP">
+  <meta name="keywords" content="magickwc, api, for, imagemagick:, image, methods, ImageMagick, PerlMagick, image processing, image, photo, software, Magick++, OpenMP, convert">
+  <meta name="rating" content="GENERAL">
+  <meta name="robots" content="INDEX, FOLLOW">
+  <meta name="generator" content="ImageMagick Studio LLC">
+  <meta name="author" content="ImageMagick Studio LLC">
+  <meta name="revisit-after" content="2 DAYS">
+  <meta name="resource-type" content="document">
+  <meta name="copyright" content="Copyright (c) 1999-2015 ImageMagick Studio LLC">
+  <meta name="distribution" content="Global">
+  <meta name="magick-serial" content="P131-S030410-R485315270133-P82224-A6668-G1245-1">
+  <link rel="icon" href="../images/wand.png">
+  <link rel="shortcut icon" href="../images/wand.ico" type="images/x-icon">
+  <link rel="stylesheet" href="../css/bootstrap.min.css">
+  <link rel="stylesheet" href="../css/magick.css">
+</head>
+
+<body>
+<div class="main">
+<div class="magick-masthead">
+  <div class="container">
+    <script type="text/javascript">
+    <!--
+      google_ad_client = "pub-3129977114552745";
+      google_ad_slot = "5439289906";
+      google_ad_width = 728;
+      google_ad_height = 90;
+    //-->
+    </script>
+    <center><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
+    </script></center>
+    <nav class="magick-nav">
+      <a class="magick-nav-item " href="../index.html">Home</a>
+      <a class="magick-nav-item " href="../binary-releases.html">Download</a>
+      <a class="magick-nav-item " href="../command-line-tools.html">Tools</a>
+      <a class="magick-nav-item " href="../command-line-options.html">Options</a>
+      <a class="magick-nav-item " href="../resources.html">Resources</a>
+      <a class="magick-nav-item " href="api.html">Develop</a>
+      <a class="magick-nav-item " href="http://www.imagemagick.org/script/search.php">Search</a>
+      <a class="magick-nav-item pull-right" href="http://www.imagemagick.org/discourse-server/">Community</a>
+    </nav>
+  </div>
+</div>
+<div class="container">
+<div class="magick-header">
+</div>
+  <footer class="magick-footer">
+    <div class="magick-nav-item pull-left">
+      <a href="../support.html">Donate</a>
+    </div>
+    <p><a href="../sitemap.html">Sitemap</a> •
+    <a href="../links.html">Related</a> •
+    <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Image Studio</a> •
+    <a href="http://jqmagick.imagemagick.org/">JqMagick</a>
+</p>
+    <p><a href="magick-image.html#">Back to top</a> •
+    <a href="http://pgp.mit.edu:11371/pks/lookup?op=get&amp;search=0x89AB63D48277377A">Public Key</a> •
+    <a href="http://www.imagemagick.org/script/contact.php">Contact Us</a></p>
+    <p><small>©  1999-2015 ImageMagick Studio LLC</small></p>
+  </footer>
+</div><!-- /.container -->
+
+  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
+  <script src="../js/bootstrap.min.js"></script>
+  <script type="text/javascript">
+    /* <![CDATA[ */
+    (function() {
+        var s = document.createElement('offline-script'), t = document.getElementsByTagName('offline-script')[0];
+        s.type = 'text/javascript';
+        s.async = true;
+        s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
+        t.parentNode.insertBefore(s, t);
+    })();
+    /* ]]> */
+  </script>
+</div>
+</body>
+</html>
