first (there is a lot to it, nothing easy), try to load the mesh that gets manipulated by bone matrcies without bone matricies- it will appear refering to spaces missconception of your aplication and of the exporter/producer defined space. You should see the same mesh- but the actual right is actual left (or top bottm...), thus not spottable.
I will omit a lot of stuff, but switching from a space where any of the "base vectors=axis" is replaced-refit, cannot be done by symetric transformation (rotaion and translation).
You will have to use an (inverse) scaling over the bone matrcies transformation..
Go to your modeling program and spectate/analyze base axises defintion, than compare them to your aplication's space axises. If they are not the same layed out, you must perform asymetric transformation over bone matricies.
very likely using an identity matrix of -1 instead of 1 on the conflicting axis after the bone transformation .
Or you can maintain the same synchronized axises of your aplication space towwards model space, but that is not just viable and prefered