Hola compañero, muy bueno tu aporte, sin embargo a pesar de estar cercano a la funcionalidad completa faltó especificar en la función dibujarCirculo que el color sería definido por el la posición i en el array colores, es decir colores[i]. P.D: declaré las variables con let porque actualmente casi no se usa el var para declarar variables porque puede generar problemas en el codigo, te aconsejo también usar let o en su defecto const si es un valor que no cambiará.
<canvas width="600" height="400"> </canvas>
<script>
let pantalla = document.querySelector("canvas");
let pincel = pantalla.getContext("2d");
let colores = ["blue", "red", "green"]
let i=0;
pincel.fillStyle = "lightgrey";
pincel.fillRect(0,0,600,400);
function dibujarCirculo(evento){
let x = evento.pageX - pantalla.offsetLeft;
let y = evento.pageY - pantalla.offsetTop;
pincel.fillStyle = colores[i];
pincel.beginPath();
pincel.arc(x,y,10,0,2*3.14);
pincel.fill();
console.log(x + "," + y);
}
pantalla.onclick = dibujarCirculo;
function alterarColor() {
i++;
if(i>=colores.length){
i=0;
}
alert("Funcionó");
return false;
}
pantalla.oncontextmenu = alterarColor;
</script>