diff --git a/imagefield_crop.module b/imagefield_crop.module
index 6aad8c1..459a48a 100644
--- a/imagefield_crop.module
+++ b/imagefield_crop.module
@@ -133,16 +133,17 @@ function _imagefield_crop_widget_resolution_validate($element, &$form_state) {
 function _imagefield_crop_widget_enforce_ratio_validate($element, &$form_state) {
   //dpm(__FUNCTION__);
   $settings = $form_state['values']['instance']['widget']['settings'];
-  if ($settings['resolution']['x'] && !$element['#value']) {
+  if (!empty($settings['resolution']) && !$element['#value']) {
     drupal_set_message(t('Output resolution is defined, but not enforced. Final images might be distroted'));
   }
 }
 
 function _imagefield_crop_widget_enforce_minimum_validate($element, &$form_state) {
   $settings = $form_state['values']['instance']['widget']['settings'];
-  $rw = ($settings['resolution']['x']) ? $settings['resolution']['x'] : 0;
-  $rh = ($settings['resolution']['y']) ? $settings['resolution']['y'] : 0;
-
+  $rw = $rh = 0;
+  if (!empty($settings['resolution'])) {
+    list($rw, $rh) = explode('x', $settings['resolution']);
+  }
   if ($settings['enforce_minimum'] &&
       (!is_numeric($rw) || intval($rw) != $rw || $rw <= 0 ||
        !is_numeric($rh) || intval($rh) != $rh || $rh <= 0)) {
@@ -207,20 +208,28 @@ function imagefield_crop_widget_process($element, &$form_state, $form) {
     $file_to_crop = _imagefield_crop_file_to_crop($element['#file']->fid);
 
     $element['cropinfo'] = _imagefield_add_cropinfo_fields($element['#file']->fid);
-    list($res_w, $res_h) = explode('x', $widget_settings['resolution']);
+    if (!empty($widget_settings['resolution'])) {
+      list($res_w, $res_h) = explode('x', $widget_settings['resolution']);
+      $element['preview'] = array(
+        '#type' => 'markup',
+        '#file' => $file_to_crop, // This is used by the #process function
+        '#process' => array('imagefield_crop_widget_preview_process'),
+        '#theme' => 'imagefield_crop_preview',
+        '#description' => t('Image preview <strong>(@res_wpx x @res_hpx)</strong>',array ('@res_w' => $res_w,'@res_h' => $res_h)),
+        '#markup' => theme('image', array(
+                             'path' => $element['#file']->uri,
+                             'getsize' => FALSE,
+                             'attributes' => array('class' => 'preview-existing'))),
+      );
+    }
+    else {
+      $res_h = $res_w = 0;
+      // Hides the default preview image.
+      $element['preview']['#access'] = FALSE;
+      // This is explicitly rendered in theme_imagefield_crop_widget().
+      $element['preview']['#description'] = t('Resolution is not set, preview is disabled.');
+    }
     list($crop_w, $crop_h) = explode('x', $widget_settings['croparea']);
-
-    $element['preview'] = array(
-      '#type' => 'markup',
-      '#file' => $file_to_crop, // This is used by the #process function
-      '#process' => array('imagefield_crop_widget_preview_process'),
-      '#theme' => 'imagefield_crop_preview',
-      '#description' => t('Image preview <strong>(@res_wpx x @res_hpx)</strong>',array ('@res_w' => $res_w,'@res_h' => $res_h)),
-      '#markup' => theme('image', array(
-                           'path' => $element['#file']->uri,
-                           'getsize' => FALSE,
-                           'attributes' => array('class' => 'preview-existing'))),
-    );
     $element['cropbox'] = array(
       '#markup' => theme('image', array(
           'path' => $file_to_crop->uri,
