You need to learn to use the debugger! If you step through your code, the problem will be obvious.
Look again at what your code is doing:
for each row in the source:
add a new row to the destination
extract the values from the source row
for each row in the destination, including all previously added rows
set the columns to the values extracted from the source
{end of inner loop}
{end of outer loop}
If your source has two rows, you add the first row to the destination and update it with the values from the first row in the source. Then, you add a second row to the destination, and
update both destination rows with the values from the second row in the source.
The solution is also obvious: don't update
every row in the destination; only update the row you've just added.
foreach (DataRow row in usersInincident.Rows)
{
int indexOfNewRow = dataGridView5.Rows.Add();
DataGridRow gridRow = dataGridView5.Rows[indexOfNewRow];
}