O meu código ficou um pouco diferente, um pouco mais longo. Em termos de técnica, ele estaria excessivo?
<canvas width="600" height="400"></canvas>
<script> 
    var tela = document.querySelector("canvas");
    var pincel = tela.getContext("2d");
    pincel.fillStyle = "grey";
    pincel.fillRect(0, 0, 600, 400);
    var paleta = ["blue", "green", "red", "yellow"];
    var corInicial = paleta.length - 1;
    var tinta = paleta[corInicial];
    var i = 0
    function mudaCor() {
        if(i < (paleta.length - 1)) {
        tinta = paleta[i];
        i = i + 1;
        } else {
        tinta = paleta[i]
        i = 0;
        }    
                return false;
    }
    tela.oncontextmenu = mudaCor;
    function circulo(x, y, cor) {
        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.arc(x, y, 10, 0, 2 * 3.14);
        pincel.fill();
    }
    function desenhaCirculo(evento) {
        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        circulo(x, y, tinta);
        console.log(x + " e " + y);
    }
    tela.onclick = desenhaCirculo;
</script>