現在JavaScriptを使用しお絵かきソフトを作成しています。
そこで拡大縮小機能を作りたいのですがうまく行きません。
下記コードです

function zoom(x, y)
{
    var canvas = document.getElementById('canvas');
    var ctx = canvas.getContext('2d');
    var width = canvas.width;
    var height = canvas.height;

    var ImageData = ctx.getImageData(0, 0, width, height);

    ctx.setTransform(x, 0, 0, y, 0, 0);

    ctx.putImageData(ImageData, 0, 0);
}

zoom関数のxとyを任意に変えて変更しているのですが、うまくいきません。
倍率を変更した後に、drawImageなどを使用して画像を張り付けてみたら指定した倍率になっていました。
getImageDataputImageDataではできないのでしょうか?
倍率変更方法は色々あるようですが、今後の作りに合わせてsetTransformを使いたいです。

なぜうまくできないのでしょうか?

分かる方、アドバイスやご指摘をお願い致します。