DataGridView CellPainting não totalmente trabalhando no Scroll

Primeiro post, mas muito tempo navegador :)

Então aqui está o meu problema: Basicamente eu tenho um datagridview que estou usando para interagir com o usuário. Em todas as linhas, há um botão "info" que dará a ilusão de que ele adiciona outra linha abaixo com todas as células mescladas (uma longa célula na linha inteira) e desenha o texto e as imagens que descrevem a linha acima dela na "célula info".

Isso funciona muito bem, exceto quando a datagridview é rolada verticalmente, então parece que a pintura não é chamada e a grade está desarrumada. Alguma ideia?

Aqui está um esboço básico do código:

private void grid_CellPainting(object sender, DataGridViewCellPaintingEventArgs e){     
    // Loop through and draw all of the open information rows
    foreach (int i in openInfoCells) {
        if (i >= grid.FirstDisplayedCell.RowIndex && 
            i <= (grid.DisplayedRowCount(true) + grid.FirstDisplayedCell.RowIndex)) {

            // Draw Rectangle
            ....

            // Draw Text or Image
            ....
        }
    }
}

questionAnswers(1)

yourAnswerToTheQuestion