Existen dos posibilidades, dependiendo de como estés intentando hacerlo. --Utilizando el driver BGI correspondiente. En este caso basta con utilizar la función Setrgbpalette(color, R, G, B) : color es el color a cambiar, en este caso de 0 a 255 y R, G, B son las componentes Roja, Verde y Azul. Las tres componentes van de 0 a 255. .. El otro sistema es accediendo a los puertos de la VGA. Supongo que este es tu caso. En este caso tenemos que saber que hay dos puertos : * 0x3c8 : En este puerto tenemos que escribir el color que deseamos cambiar. En este caso de 0 a 255. Cuando se escriben las tres componentes se incrementa automáticamente. * 0x3c9 : En este otro tenemos que escribir las componentes R/G/B de la paleta para el color indicado. Despues de cada escritura se incrementa automáticamente. Para escribir en los puertos contamos con la función outportb. Para escribir por ejemplo el valor 0 en el puerto 0x3c8, se debe escribir : ourportb(0x3c8,0); De acuerdo con lo explicado anteriormente, para actualizar la paleta del color numero 15 y ponerlo a negro (0,0,0) tendremos que escribir un fragmento de código como el que sigue : outportb(0x3c8,15); outportb(0x3c9,0); // Rojo outportb(0x3c9,0); // Verde outportb(0x3c9,0); // Azul En caso de que queramos cambiar la paleta completa. Suponiendo que la paleta la tenemos en un vector de 256*3 elementos. Lo podemos hacer del siguiente modo : outportb(0x3c8,0); for(n = 0;n < 256*3;n++) { outportb(0x3c9,Paleta[n]); } Paleta contiene las componentes RGB de cada color en orden. -- Consideraciones finales :). Mientras que con el setrgbpalette del driver BGI las componentes son de 0 a 255, es decir, utilizan los 8 bits, en este ultimo caso, solo se utilizan 6. Esto quiere decir, que en caso de que tengas la paleta con componentes de 0 a 255, lo cual es bastante común en algunos formatos gráficos, esta tiene que ser adaptada para que la visualización sea correcta. Dado que en la paleta tenemos 8 bits, y queremos que cada componente solo utilize 6, para adaptarla simplemente podemos desplazar cada componente 2 posiciones a la derecha mediante el operador >> Para convertir una paleta completa : for(n = 0;n < 256*3;n++) { Paleta[n] >>= 2; } Creo que eso era todo :).