What exactly is malleable here?
An unsigned transaction has none of the signatures included. The unsigned transaction is hashed, signed and the signatures are added.
To check a transaction's signatures, you need to delete them from the transaction and then hash the result. You then check the signatures against that hash.
Since the signatures themselves aren't actually signed, you can change them.
One way to do that is to add zeros to the number. A signature of (1234, 5678) could be converted to (01234, 05678). You haven't change the two value but you have changed how they are encoded.
This gives a different tx-id, but doesn't invalidate the signature.
You can also negate one of the values without it having any effect.