Could you please change visibility of methods GetCellRect and GetCellRectM to protected? These methods are useful for development of new controls.
IMHO, the only reason to declare something as private is when it can invalidate state of an object without proper use.
TIA
Well, another reason is when it is implementation issue and you are not sure whether you want to fix it in public interface. When something is made public, it is hard(er) to remove.