No, that's not quite what I meant. If you had a method like this:

```Java
static void calculateInSampleSize(int targetWidth, int targetHeight, BitmapFactory.Options options) {
  int sampleSize = options.inSampleSize;
  final int height = options.outHeight / sampleSize;
  final int width = options.outWidth / sampleSize;
  if (height > targetHeight || width > targetWidth) {
    final int heightRatio = Math.round((float) height / (float) targetHeight);
    final int widthRatio = Math.round((float) width / (float) targetWidth);
    sampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
    sampleSize = Utils.calculateValidInSampleSize(sampleSize);
  }
}
```
Then you could just do...
```Java
static void calculateInSampleSize(Request request, BitmapFactory.Options options) {
  if (data.hasSize()) {
    calculateInSampleSize(data.targetWidth, data.targetHeight, options);
  }
  if (!data.overTextureSize) {
    calculateInSampleSize(MAX_TEXTURE_SIZE, MAX_TEXTURE_SIZE, options);
  }
  options.inJustDecodeBounds = false;
}
```

That all being said, I still think there's a better way... I might try fork your branch and show you some ideas I have.