When creating highly regular tables, I'm quite fond of the custom C column type shown below that accepts a width and centers the content, without having me worry about intercolumn space messing everything up.
Now when trying to color such a cell, strange things abound:

How can I get rid of the spurious overshoot?
\documentclass{article}
\usepackage{colortbl}
\newcolumntype{C}[1]{@{}>{\centering\arraybackslash}p{#1}@{}}
\begin{document}
\begin{tabular}{|C{2em}|C{2em}|}
\hline
a & \cellcolor{red}b \\\hline
c & d \\\hline
\end{tabular}
\end{document}



\tabcolsepis now globally set to0pt-- it should be done inside another environment or within a\begingroup...\endgrouppair – Sep 01 '14 at 12:01C(which is fair enough). Is there a way to change\tabcolseponly forCcolumns (other than using\columncolor)? – Fritz Sep 01 '14 at 13:54