If you disable the matrix code and just light up one row do you still have this problem? My guess is things aren't being updated fast enough and for a fraction of a second the row above is displaying the next row's data.
When I light up a single row the problem disappears.
I removed the UDN2981A for trouble shooting. The matrix code worked just fine Since the current I will be driving is below the 595 limits, I will leave the design like this (without using the UDN2981A).
What is a UDN2981A used for? I see on the datasheet that it is an 8 channel source driver. What does that mean and what is its function within your setup?
UDN2981 is used to source the (16 LEDs x up to 20mA) of current for the LEDs in Row1, Row 2, etc up to Row 8.
Typically one would set all the cathodes high/low as desired, then puls the anode current on.
Set the anodes for the next row, pulse the next row's anode current on.
Either the OP has very high current limit resistors to keep the current required per row down, or 'extreme' multiplexing is going on and only 1 cathode at a time is being taken low so only 1 LED can be turned on at any one time, vs up to 16 at a time.