Androidの画像処理ライブラリPicassoを使って、以下の画像処理した時以下のTransformationを実装したクラスでreturnされず(recycleまではされている)に何度も、このメソッドがループ?して最終的に画像サイズや切り取り位置の値が以下のようになりクラッシュします。もと画像にサイズは640×480です。他の画像ではできているのでなんでそうなるのかさっぱりわかりません。原因がわかれば教えていただければ幸いです。よろしくおねがいします。

画像URL
https://i.ytimg.com/vi/RFinNxS5KN4/sddefault.jpg

Picassoの利用箇所

Picasso.with(mContext)
                    .load(APIUtil.checkThumbnail(item))
                    .transform(new ViewUtils.TopThumbnailEditor())
                    .placeholder(R.drawable.top_thumbnail_placeholder)
                    .fit()
                    .into(holder.thumbnail);

Transformation実装クラス

private static final float THUMBNAIL_HEIGHT_DIVINER = 9f/16f;
private static final float TOP_HEIGHT_DIVINER = 16f/43f;

public static class TopThumbnailEditor implements Transformation{

        @Override
        public Bitmap transform(Bitmap source) {
            float width = source.getWidth();
            float height = source.getHeight();

            float newHeight = width * THUMBNAIL_HEIGHT_DIVINER;
            float heightCutSize = (height - newHeight)/2;
            newHeight = width * TOP_HEIGHT_DIVINER;
            float moreHeightCutSize = newHeight/2;

            Bitmap result = Bitmap.createBitmap(source, 0, (int)(heightCutSize+moreHeightCutSize), (int)width, (int)newHeight);
            if(result!=source)
                source.recycle();
            return result;
        }

        @Override
        public String key() {
            return "TopThumbnailEditor";
        }
    }

最終的な画像のサイズ、切り取り位置など

width: 1020.0
height: 379.0
X座標の切り取り位置: -97.375
Y座標の切り取り位置: 189.76744