A method of rendering an image on a display having a plurality of pixels, each of which is capable of displaying any one of a plurality of primary colors, the convex hull of the primary colors defining a color gamut, the method comprising, for each of the plurality of pixels in sequence: receiving input data representing the color of the pixel to be rendered; except for the first pixel in the sequence, combining the input data with error data ( e i,j) generated from at least one pixel previously rendered to form modified input data ( u i, j, u' i,j); converting (210, 212) the input data to output data ( y i,j); calculating the difference between the modified input data ( u i,j, u' i,j) and the output data ( y i,j) for the pixel and thereby generating error data ( e i,j) for the pixel; and supplying the output data ( y i,j) for the plurality of pixels to the display and thereby rendering the image on the display, the method being characterized by: decomposing the color gamut into a plurality of simplexs, each of which has one of the plurality of primary colors at each vertex; determining in a color space the simplex enclosing the modified input data ( u i,j, u' ij), and the display primary colors { P ks} associated with the simplex; converting the modified input ( u i,j, u' i,j) data to output data ( y i,j); and wherein converting the modified input data ( u i,j, u' i,j) to output data ( y i,j) comprises converting the modified input data ( u i,j, u' i,j) to barycentric coordinates based upon the simplex and setting the output data ( y i,j) to the primary having the largest barycentric coordinate. receiving input data representing the color of the pixel to be rendered; except for the first pixel in the sequence, combining the input data with error data ( e i,j) generated from at least one pixel previously rendered to form modified input data ( u i, j, u' i,j); converting (210, 212) the input data to output data ( y i,j); calculating the difference between the modified input data ( u i,j, u' i,j) and the output data ( y i,j) for the pixel and thereby generating error data ( e i,j) for the pixel; and supplying the output data ( y i,j) for the plurality of pixels to the display and thereby rendering the image on the display, the method being characterized by: decomposing the color gamut into a plurality of simplexs, each of which has one of the plurality of primary colors at each vertex; determining in a color space the simplex enclosing the modified input data ( u i,j, u' ij), and the display primary colors { P ks} associated with the simplex; converting the modified input ( u i,j, u' i,j) data to output data ( y i,j); and wherein converting the modified input data ( u i,j, u' i,j) to output data ( y i,j) comprises converting the modified input data ( u i,j, u' i,j) to barycentric coordinates based upon the simplex and setting the output data ( y i,j) to the primary having the largest barycentric coordinate. decomposing the color gamut into a plurality of simplexs, each of which has one of the plurality of primary colors at each vertex; determining in a color space the simplex enclosing the modified input data ( u i,j, u' ij), and the display primary colors { P ks} associated with the simplex; converting the modified input ( u i,j, u' i,j) data to output data ( y i,j); and wherein converting the modified input data ( u i,j, u' i,j) to output data ( y i,j) comprises converting the modified input data ( u i,j, u' i,j) to barycentric coordinates based upon the simplex and setting the output data ( y i,j) to the primary having the largest barycentric coordinate.