Looks like you had the PWM beating with the multiplexing rate. I would actually try and increase that delay.
Better still make it leave the write routine with the LEDs on and only turn them off when you enter the refresh routine and have to change the data.
Also if you are looking into the bright point of the LED you are inclined to perceive more flicker than if you look at the LED through some sort of diffuser.