using gradientTransform
more progress