#define OFFSET_X_MAX_INCH 75
 #define OFFSET_Y_MAX_INCH 390
+#define MAX_IMAGE_WIDTH_INCH 85
 
 void _kds_s2000w_handler_opts_write_string_value(json_object* value_object, void* value)
 {
        range->quant = kds_s2000w_handler_opts_calc_pixel_quant(dpi);
 }
 
+void _kds_s2000w_handler_opts_set_image_width_range(json_object* config)
+{
+       SANE_Option_Descriptor* image_offset_x = kds_s2000w_option_descriptors_get_by_name(SANE_NAME_PAGE_WIDTH);
+
+       json_object* object_value = json_object_object_get(config, "DPI");
+       int32_t dpi = json_object_get_int(object_value);
+
+       SANE_Range* range = (SANE_Range*) image_offset_x->constraint.range;
+
+       range->min = 0;
+       range->max = kds_s2000w_handler_opts_calc_inch_to_pixel(dpi, MAX_IMAGE_WIDTH_INCH);
+       range->quant = kds_s2000w_handler_opts_calc_pixel_quant(dpi);
+}
+
+
 void _kds_s2000w_handler_opts_set_enable_suboptions_cropping_image(json_object* config)
 {
        json_object* cropping_image = json_object_object_get(config, "CroppingImage");;
 
        SANE_Option_Descriptor* image_offset_x = kds_s2000w_option_descriptors_get_by_name(SANE_NAME_SCAN_TL_X);
        SANE_Option_Descriptor* image_offset_y = kds_s2000w_option_descriptors_get_by_name(SANE_NAME_SCAN_TL_Y);
-       SANE_Option_Descriptor* image_width = kds_s2000w_option_descriptors_get_by_name("image-width");
+       SANE_Option_Descriptor* image_width = kds_s2000w_option_descriptors_get_by_name(SANE_NAME_PAGE_WIDTH);
        SANE_Option_Descriptor* image_height = kds_s2000w_option_descriptors_get_by_name("image-height");
 
        _kds_s2000w_handler_opts_set_offset_x_range(config);
        _kds_s2000w_handler_opts_set_offset_y_range(config);
+       _kds_s2000w_handler_opts_set_image_width_range(config);
 
        if (strcmp(cropping_image_value, "PartialDocument") == 0) {
                image_offset_x->cap |= SANE_CAP_SOFT_SELECT;
                        _kds_s2000w_handler_opts_get_pixel_value_from_inch(config, "ImageOffsetX", value);
                        break;
                case 10:
-                       value_object = json_object_object_get(config, "ImageOffsetY");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
+                       _kds_s2000w_handler_opts_get_pixel_value_from_inch(config, "ImageOffsetY", value);
                        break;
                case 11:
-                       value_object = json_object_object_get(config, "ImageWidth");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
+                       _kds_s2000w_handler_opts_get_pixel_value_from_inch(config, "ImageWidth", value);
                        break;
                case 12:
                        value_object = json_object_object_get(config, "ImageHeight");
                        _kds_s2000w_handler_opts_set_inch_value_from_pixel(config, "ImageOffsetY", value);
                        break;
                case 11:
-                       value_object = json_object_object_get(config, "ImageWidth");
-                       _kds_s2000w_handler_opts_write_int_value_to_json(value_object, value);
+                       _kds_s2000w_handler_opts_set_inch_value_from_pixel(config, "ImageWidth", value);
                        break;
                case 12:
                        value_object = json_object_object_get(config, "ImageHeight");
 
 {
        SANE_Option_Descriptor* option = kds_s2000w_option_descriptors_get(11);
 
-       assert_string_equal("image-width", option->name);
-       assert_string_equal("Image Width", option->title);
-       assert_string_equal("Image Width", option->desc);
+       assert_string_equal(SANE_NAME_PAGE_WIDTH, option->name);
+       assert_string_equal(SANE_TITLE_PAGE_WIDTH, option->title);
+       assert_string_equal(SANE_DESC_PAGE_WIDTH, option->desc);
        assert_int_equal(SANE_TYPE_INT, option->type);
-       assert_int_equal(SANE_UNIT_NONE, option->unit);
+       assert_int_equal(SANE_UNIT_PIXEL, option->unit);
        assert_int_equal(sizeof(SANE_Int), option->size);
        assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap);
        assert_int_equal(SANE_CONSTRAINT_RANGE, option->constraint_type);
-       assert_int_equal(option->constraint.range->min, 10);
-       assert_int_equal(option->constraint.range->max, 85);
-       assert_int_equal(option->constraint.range->quant, 1);
+       assert_int_equal(option->constraint.range->min, 200);
+       assert_int_equal(option->constraint.range->max, 1700);
+       assert_int_equal(option->constraint.range->quant, 20);
 }
 
 void kds_s2000w_option_get_descriptor_twelve_test()