Jason Campbell wrote: > My goal is a CMY-only profile with absolutely no K generation which appears > to be happening. However I realized if I round-trip a CMY of 100/100/100 > from CMY->Lab->CMY, I was getting a clipped value (roughly 98/97/95). If I > test CMY 50/40/40 my round-trip is extremely close to the input values. Hi, this is difficult with a cLUT based profile, without going to some heroic efforts. The reason is that the reverse grid is (naturally!) discrete, so the edge of the device gamut typically falls within a cell. The cell grid points can only contain the device values, and to return an interpolated value of exactly 100%, some of the grid points would have to exceed 100%. This is forbidden by the ICC device value encoding which only allows values between 0 and 100%. By playing tricks with the per channel curves it is possible to overcome this limitation, but extra code would be needed to compute extrapolated values beyond the gamut boundary, such that gamut boundary points are at 100%. I've never got around to implementing this approach, because typically this slight gamut compression at the boundaries is not unwelcome, and if better precision is of concern, a device link is superior. You can minimise this effect by ramping up the grid resolution, but you pay a price in the resulting computation time and profile size. Graeme Gill.