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 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 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. <EOS>