Tentei deixar o programa mais facilmente "editável" com relação a paleta de cores com o uso de arrays, nessa versão podemos simplesmente inserir novas cores dentro da array cores, e o programa funcionará perfeitamente. Também utilizei um setInterval() para redesenhar constantemente a paleta de cores e as bordas do canvas, assim não temos as dificuldades de desenhar muito próximo as bordas que o método de desabilitar a possibilidade de desenhar apresenta, também mantemos a experiência do usuário de que não é possível desenhar nessas áreas. Programa disponibilizado abaixo pra quem quiser testar ou sugerir melhorias.
<canvas width="600" height="400"></canvas>
<script>
    var tela = document.querySelector("canvas");
    var pincel = tela.getContext("2d");
    var cont;
    var tamanho = 50;
    var cores = ["red", "green", "blue", "white"];
    var raio = 10;
    var cont2;
    var corPincel = cores.length-1;
    function desenhaQuadrado(x, y, tamanho, cor) {
        pincel.fillStyle = cor;
        pincel.fillRect(x, y, tamanho, tamanho);
        pincel.strokeRect(x, y, tamanho, tamanho);
    }
    function desenhaPaleta() {
        for(cont = 0; cont<cores.length; cont++) {
            pincel.storkeStyle = "black";
            pincel.strokeRect(0, 0, tela.width, tela.height);
            desenhaQuadrado(cont*tamanho, 0, tamanho, cores[cont]);
        }
    }
    function desenhaCirculo(x, y, raio, cor) {
        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2*Math.PI);
        pincel.fill();
    }
    setInterval(desenhaPaleta, 0);
    tela.onmousedown = function(evento) {
        for(cont2 = cores.length-1; cont2>=0; cont2--) {
            if(evento.offsetX<=cont2*tamanho+tamanho 
                && evento.offsetY<=tamanho) {
                corPincel = cont2;
            }
        }
        desenha = true;
        desenhaCirculo(evento.offsetX, evento.offsetY, raio, cores[corPincel]);
        tela.onmouseup = function() {
            desenha = false;
        }
        tela.onmousemove = function(evento) {
            if(desenha) {
                desenhaCirculo(evento.offsetX, evento.offsetY, raio, cores[corPincel]);
            }
        }
    }
</script>