       @croppedImageCoords(previewUrl, size, @__parseModifiers modifiers)
         .then (coords) =>
           {width: w, height: h} = coords
+          prefered = @__options.preferedSize
 
           opts =
             crop: coords

    prepareOptions = (options) ->
      fited = utils.fitSizeInCdnLimit options.preferedSize
      if fited[0] isnt options.preferedSize[0]
        willBe = "#{fited.join 'x'}#{if options.upscale then '' else ' or smaller'}"
        utils.warnOnce """
          Specified preferred crop size is bigger than our CDN allows.
          Resulting image size will be #{willBe}.
        """
        options.preferedSize = fited


          changed = w isnt @__originalSize[0] or h isnt @__originalSize[1]
          if changed
            opts.modifiers = "-/crop/#{w}x#{h}/#{coords.left},#{coords.top}/"

            downscale = @__options.downscale and (w > prefered[0] or h > prefered[1])
            upscale = @__options.upscale and (w < prefered[0] or h < prefered[1])
            if downscale or upscale
              [opts.crop.sw, opts.crop.sh] = prefered
              opts.modifiers += "-/resize/#{prefered.join 'x'}/"
            else
              opts.modifiers += "-/preview/"

          opts

    croppedImageCoords: (previewUrl, size, coords) ->
