Issue 1:
Glide Version:

Glide version:3.7.0

Integration libraries:

okhttp:2.7.0

Device/Android Version:

All Devices

Issue details / Repro steps / Use case background:

When Image is loaded for the first time it shows compressed with less height.

Once it gets cached it shows perfect.

Glide load line / GlideModule (if any) / list Adapter code (if any):

Glide.with(context).load(gallery.getPath()).placeholder(R.drawable.logo)
.override(512, 512)
.transform(new CenterCrop(context))
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(holder.img);.

Layout XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/column_width"
android:layout_height="@dimen/column_width"
android:orientation="vertical">

<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardCornerRadius="4dp"
app:contentPadding="4dp">
<ImageView
android:id="@+id/img"
android:layout_width="122dp"
android:layout_height="122dp"
tools:src="@drawable/logo" />
</android.support.v7.widget.CardView>
</LinearLayout>

Stack trace / LogCat:

paste stack trace and/or log here

Issue 2:
Glide Version/Integration library (if any): 3.5.2

Device/Android Version: S4/4.4

Issue details/Repro steps: Load a different sized thumbnail and image, or placeholder and image and note the result:

Glide load line:

class Delay extends UnitTransformation {
private final int sleepTime;
public Delay(int sleepTime) { this.sleepTime = sleepTime; }
@Override public Resource transform(Resource resource, int outWidth, int outHeight) {
try { Thread.sleep(sleepTime); } catch (InterruptedException ex) {}
return super.transform(resource, outWidth, outHeight);
}
}

@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ImageView image = new ImageView(this);
setContentView(image);

// Saved as R.drawable.placeholder
String placeholder = "http://placehold.it/300x500/eedddd.png&text=PLACEHOLDER";
// Square image
String thumb = "http://placehold.it/300x300/eeeedd.png&text=THUMB";
// Wide image
final String full = "http://placehold.it/300x100/eedddd.png&text=FULL";
// Prepared request with unimportant clutter
final DrawableRequestBuilder<String> req = Glide
.with(this)
.fromString()
.diskCacheStrategy(DiskCacheStrategy.SOURCE) // disable network delay for demo
.skipMemoryCache(true) // make sure transform runs for demo
.crossFade(2000) // default, just stretch time for noticability
;

req.clone()
.thumbnail(req.clone()
.transform(new Delay(500)) // wait a little
.load(thumb)
)
.transform(new Delay(1000)) // wait before going from thumbnail to image
//.dontAnimate() // solves the problem
.load(full)
.into(image);

image.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) {
req.clone()
.load(full)
.placeholder(R.drawable.placeholder)
.transform(new Delay(1000))
//.animate(R.anim.abc_fade_in) // also solves the problem
.into(image);
}
});

By removing all the delaying parts, the end result is better, but the now the thumbnail is messed up: