creo que te olvidas el return false en la funcionalterarColor. Ya que el oncontextmenu espera true para mostrar el menu o false para ocultarlo.
si te falta el return false
Para el cambio de colores no necesitas ver si es mayor a colores.length con solo saber que es igual lo reduces a 0 nuevamente y ya debería funcionar y como dicen, te falta el return false para evitar que salga el sub menu