This sounds like a crosstalk issue. I.e. the signal on one wire is being inductively impressed on one or more of the other wires. There are, typically, 4 twisted pairs in an Ethernet cable. The twisted pairs will, most likely, have the greatest inductive coupling. Try arranging the wires so you're using two twisted pairs for the Row lines, and the two other twisted pairs for the Column lines. Hopefully, the other Row lines will have a low enough impedance, when LOW, to dampen out the crosstalk.
Another thing you may be contending with, is line reflections. Sending pulse waves down a transmission line [which is what you're using your Ethernet cable as], that is not properly terminated, can result in reflected energy that can muddy up the pulse. Typically, the termination resistance needs to be fairly low -- i.e. around 120Ω for twisted pair. The outputs on your MCU probably won't be able to drive something like that [typically a Line Driver is used for this], but, you might be able to dampen some of this by including pull-ups with as low a value as you can get away with.
You don't seem to say what MCU device you are using. I see a voltage of 3.3, so I'm assuming it's a 3.3V Arduino, or ESP of some sort(?) But, try adding a pull up resistor to each Column pin [assuming they are the inputs], using the following formula:
3.3V/I = R
Where I is the maximum recommended output current [NOT the ABSOLUTE MAXIMUM Current] for the MCU that you are using. For an Arduino Uno/Pro Mini that's 20mA [I know the TECH SPECs show 40mA, but that's the ABSOLUTE MAXIMUM, and really shouldn't be the value listed there].
BUT, if you choose to not be as conservative as I am, and if you are using an MCU that has an ABSOLUTE MAXIMUM output current drive of at least 28mA, and is running at 3.3V, then you could get away with 120Ω pull-ups.
Other than that, consider a Line Driver.