How do I scale without loosing my animation?
I recommend using python. (mainly based on How to get keyframes and related information?)

for ob in bpy.context.scene.objects :
    if ob.type in ['MESH','ARMATURE'] and ob.animation_data:
        for fc in ob.animation_data.action.fcurves :
            for key in fc.keyframe_points :
                bpy.context.scene.frame_set(key.co[0])
                if ob.scale[0] &lt; 0:
                    ob.scale *= -1
                    ob.keyframe_insert(data_path = 'scale')


The flow of this code is something like;


look for an object
get the frame number with keyframes
rescale it if the scale is minus
overwrite keyframe


I've tried this with an animated .blend file in blender2.79 and it worked.