画像にアルファ チャネルがある限り、描画されたアルファ値をリセットするメカニズムなしで何度も再描画するときに、これを回避することはできません。
この理由は、そのピクセルのアルファ値が蓄積されるため、不透明でないエッジ (またはアンチエイリアスされたエッジ) を互いの上に描画すると、アルファ チャネルの値が既に描画されている値に追加されるためです。その結果、エッジがますます目立つようになります。
幸いなことに、これを回避する方法がいくつかあります。
A)画像にアルファチャンネルを保持したい場合は、画像をclearRect
描画する前に使用してください。
context.clearRect(0, 0, img.width, img.height);
context.drawImage(img, 0, 0);
これにより、キャンバスとアルファ チャネルがクリアされます。
ONLINE DEMO

B)アルファ チャネルが重要でない場合は、アルファ チャネルなしで画像を保存します (透明度をオフにして PNG を使用するか、JPEG を使用します)。
例のループにも注意してください。これは、毎回画像のデコードと同様にロード/キャッシュ チェックを開始しているため、画像を再描画する良い方法ではありません。
コードを次のように変更できます (好きなように採用してください)。
var canvas = document.getElementById("event");
var context = canvas.getContext("2d");
var img = document.createElement('img'); // due to chrome bug
img.onload = drawImage; // set onload first
img.src = "../img/event.png"; // src last..
function drawImage() {
context.clearRect(0, 0, img.width, img.height);
context.drawImage(img, 0, 0);
setTimeout(drawImage, 3000);
}