diff --git a/imagezoom.module b/imagezoom.module
index cfb79bd..ab5bd21 100644
--- a/imagezoom.module
+++ b/imagezoom.module
@@ -28,6 +28,21 @@ function imagezoom_libraries_info() {
       'js' => array('jquery.elevatezoom.js'),
     ),
   );
+  $libraries['elevatezoom-plus'] = array(
+    'name' => 'ElevateZoom-Plus',
+    'vendor url' => 'http://igorlino.github.io/elevatezoom-plus/',
+    'download url' => 'https://github.com/igorlino/elevatezoom-plus/releases',
+    'version arguments' => array(
+      'file' => 'src/jquery.ez-plus.js',
+      'pattern' => '/jQuery ezPlus\s+([\d\.]+)/',
+      'lines' => 16,
+      'cols' => 50,
+    ),
+    'files' => array(
+      'js' => array('src/jquery.ez-plus.js'),
+      'css' => array('css/jquery.ez-plus.css'),
+    ),
+  );
 
   return $libraries;
 }
@@ -44,6 +59,7 @@ function imagezoom_field_formatter_info() {
         'imagezoom_zoom_type' => '',
         'imagezoom_display_style' => '',
         'imagezoom_zoom_style' => '',
+        'imagezoom_zoom_library' => '',
       ),
     ),
   );
@@ -58,6 +74,16 @@ function imagezoom_field_formatter_settings_form($field, $instance, $view_mode,
   $display = $instance['display'][$view_mode];
   $settings = $display['settings'];
 
+  $element['imagezoom_zoom_library'] = array(
+    '#type' => 'select',
+    '#title' => t('Library'),
+    '#options' => array(
+      'elevatezoom' => 'Elevatezoom',
+      'elevatezoom-plus' => 'ElevateZoom-Plus',
+    ),
+    '#default_value' => $settings['imagezoom_zoom_library'],
+  );
+
   $element['imagezoom_zoom_type'] = array(
     '#type' => 'select',
     '#title' => t('Zoom type'),
@@ -94,6 +120,14 @@ function imagezoom_field_formatter_settings_summary($field, $instance, $view_mod
 
   $summary = array();
 
+  $zoom_libraries = array(
+    'elevatezoom' => 'Elevatezoom',
+    'elevatezoom-plus' => 'ElevateZoom-Plus',
+  );
+  $summary[] = t('Zoom Library: @type', array(
+    '@type' => (!empty($settings['imagezoom_zoom_library']) && !empty($zoom_libraries[$settings['imagezoom_zoom_library']])) ? $zoom_libraries[$settings['imagezoom_zoom_library']] : reset($zoom_libraries),
+  ));
+
   $zoom_types = imagezoom_zoom_types();
   $summary[] = t('Zoom type: @type', array(
     '@type' => $zoom_types[$settings['imagezoom_zoom_type']],
@@ -129,6 +163,7 @@ function imagezoom_field_formatter_view($entity_type, $entity, $field, $instance
   $context = array(
     'field' => $field,
     'instance' => $instance,
+    'display' => $display,
   );
   drupal_alter('imagezoom_settings', $settings, $context);
 
@@ -140,6 +175,7 @@ function imagezoom_field_formatter_view($entity_type, $entity, $field, $instance
       '#display_style' => $display_style,
       '#zoom_style' => $zoom_style,
       '#settings' => $settings,
+      '#zoom_library' => (empty($display['settings']['imagezoom_zoom_library'])) ? 'elevatezoom' : $display['settings']['imagezoom_zoom_library'],
     );
   }
 
@@ -157,6 +193,7 @@ function imagezoom_theme($existing, $type, $theme, $path) {
         'display_style' => NULL,
         'zoom_style' => NULL,
         'settings' => NULL,
+        'zoom_library' => NULL,
       ),
       'template' => 'imagezoom_image',
       'path' => $path . '/theme',
@@ -168,7 +205,8 @@ function imagezoom_theme($existing, $type, $theme, $path) {
  * Preprocess function for imagezoom_image.
  */
 function template_preprocess_imagezoom_image(&$variables) {
-  $library = libraries_load('elevatezoom');
+  $library_name = (empty($variables['zoom_library'])) ? 'elevatezoom' : $variables['zoom_library'];
+  $library = libraries_load($library_name);
   if (!$library['loaded']) {
     drupal_set_message($library['error message'], 'error');
   }
diff --git a/js/imagezoom.js b/js/imagezoom.js
index 159215a..2f15633 100644
--- a/js/imagezoom.js
+++ b/js/imagezoom.js
@@ -5,7 +5,12 @@
    */
   Drupal.behaviors.imagezoom = {
     attach: function(context, settings) {
-      $('.imagezoom-image', context).elevateZoom(settings.imagezoom);
+      if (typeof jQuery.fn.ezPlus != undefined) {
+        $('.imagezoom-image', context).ezPlus(settings.imagezoom);
+      }
+      else {
+        $('.imagezoom-image', context).elevateZoom(settings.imagezoom);
+      }
     }
   }
 
diff --git a/modules/imagezoom_gallery/imagezoom_gallery.module b/modules/imagezoom_gallery/imagezoom_gallery.module
index 66d80c3..4b76d56 100644
--- a/modules/imagezoom_gallery/imagezoom_gallery.module
+++ b/modules/imagezoom_gallery/imagezoom_gallery.module
@@ -17,6 +17,7 @@ function imagezoom_gallery_field_formatter_info() {
         'imagezoom_zoom_type' => '',
         'imagezoom_display_style' => '',
         'imagezoom_zoom_style' => '',
+        'imagezoom_zoom_library' => '',
         'imagezoom_thumb_style' => '',
       ),
     ),
@@ -83,6 +84,7 @@ function imagezoom_gallery_field_formatter_view($entity_type, $entity, $field, $
   $context = array(
     'field' => $field,
     'instance' => $instance,
+    'display' => $display,
   );
   drupal_alter('imagezoom_settings', $settings, $context);
 
@@ -93,6 +95,7 @@ function imagezoom_gallery_field_formatter_view($entity_type, $entity, $field, $
     '#zoom_style' => $zoom_style,
     '#thumb_style' => $thumb_style,
     '#settings' => $settings,
+    '#zoom_library' => (empty($display['settings']['imagezoom_zoom_library'])) ? 'elevatezoom' : $display['settings']['imagezoom_zoom_library'],
   );
 
   return $element;
@@ -112,6 +115,7 @@ function imagezoom_gallery_theme($existing, $type, $theme, $path) {
         'settings' => NULL,
         'image' => NULL,
         'thumbs' => NULL,
+        'zoom_library' => NULL,
       ),
       'template' => 'imagezoom_gallery',
       'path' => $path . '/theme',
@@ -140,6 +144,7 @@ function template_preprocess_imagezoom_gallery(&$variables) {
     'display_style' => $variables['display_style'],
     'zoom_style' => $variables['zoom_style'],
     'settings' => $variables['settings'],
+    'zoom_library' => (empty($variables['zoom_library'])) ? 'elevatezoom' : $variables['zoom_library'],
   ));
 
   $variables['thumbs'] = array();
@@ -165,11 +170,9 @@ function template_preprocess_imagezoom_thumb(&$variables) {
     $derivative_uri = image_style_path($variables['display_style'], $item['uri']);
     image_style_create_derivative($image_style, $item['uri'], $derivative_uri);
     $variables['image'] = image_style_url($variables['display_style'], $item['uri']);
-    $info = image_get_info($derivative_uri);
   }
   else {
     $variables['image'] = file_create_url($item['uri']);
-    $info = image_get_info($item['uri']);
   }
 
   if ($variables['zoom_style']) {
