Вот и про границу я думаю.Во время выполнения, когда выделена ячейка, вы создаете черную рамку.Все границы имеют эффект заполнения.Я предлагаю вам установить высоту и ширину строки выделенных ячеек за вычетом ширины границы.
Например;
Подумайте о квадрате шириной 100 пикселей.Если вы добавите границу шириной 2 пикселя к этому квадрату, она автоматически составит 104 пикселя.Если вы хотите фиксированный вид квадрата шириной 100px, вам нужно установить его ширину 96px и добавить границу ширины 2 px.
Надеюсь, это поможет.