In my polyview program, cells cannot be assigned a color, because they are not rendered directly. Only polygons can be assigned a color. Cells are highlighted by assigning their ridges (polygons) with a different texture than the surrounding textures. The program implements a simple query language that lets you easily select all ridges of a particular cell or set of cells, and lets you add to/subtract from the selected set. At the end, however, only one texture can be assigned to a polygon. So which polygon is assigned which texture depends on how the assignment set was chosen. Basically, later assignments will override earlier assignments. So if you polygon 123 is shared by cell 1 and cell 2, and you assigned texture 1 to the ridges in cell 1 and texture 2 to the ridges in cell 2, then polygon 123 will be assigned texture 2.
It is possible, as I implied, to select the ridges of a cell, and then remove certain ridges from the selected set before assigning a texture. Sometimes I do this for clarity. E.g., if the ridges of a cell that projects to a deeper layer in the 3D projection image, then assigning textures to ridges in cells that appear in a shallower layer may completely override the assignments to the deeper cell, so it becomes "invisible" in the result. One way to work around this is to select the ridges in the outer cells, then subtract the ridges in the deeper cell, so that the selected ridges include only ridges in the outer cells but not in the inner cell. Then the assignment can be performed without overriding previous assignment(s) to the ridges of the inner cell.
When cells are disjoint, such workarounds are unnecessary, so I usually just assign the ridges of a cell without subtracting anything. However, if a ridge belongs to a cell on the far side of the polytope, then sometimes it may still appear in the render, because the ridge happens to project to the limb. One way to work around this is to select all the cells of interest first, then subtract from that set the cells that lie on the far side, then select the ridges of the resulting subset of cells. In this case, the ridges that belong to far side cells will not be included in the set, so the texture assignment will not affect them. This generally produces better results in static images, so that you don't see "stray" polygons highlighted when they only belong to far-side cells. However, in animations this means that every time a far side cell rotates onto the limb, its ridges will suddenly "pop" into view, which can be jarring if you don't know what you're looking at. Similarly, every time a near side cell rotates out of view, its ridges will suddenly "pop" out of existence (they no longer get assigned the highlighted texture in that frame). This also produces rather jarring animations.
I have thought about having the texture gradually fade out as the cell approaches the limb, instead of a binary assigned or not state. The program currently doesn't support this, however, and because of the way the translation to POVRay input is done, some extensive, potentially disruptive changes will have to be implemented to make this possible. tl;dr: this currently isn't possible yet.