Every MergedRange have their own column index, so upon adding/removing a column they do not adjust their position accordingly whereas the rest of the columns do. Due to this, MergedRanges overlaps the content of neighboring columns when any column is added or removed.
Steps to Complete:
Access the current column that contains cursor and for each MergedRange in MergedRangeCollection, check whether the current column is to the left of its first column. If yes, then reduce its column index by 1 in case of removal and increase by 1 in case of addition.