diff --git a/io_scene_fbx/export_fbx_bin.py b/io_scene_fbx/export_fbx_bin.py
index c1ed7f24a408c1bd540270e35d904aee4a3ee9b1..9bfe9df8d7bf2d50808ccd30eace51536457b50a 100644
--- a/io_scene_fbx/export_fbx_bin.py
+++ b/io_scene_fbx/export_fbx_bin.py
@@ -917,7 +917,11 @@ def fbx_data_mesh_elements(root, me, scene_data):
     # global matrix, so we need to apply the global matrix to the vertices to get the correct result.
     geom_mat_co = scene_data.settings.global_matrix if do_bake_space_transform else None
     # We need to apply the inverse transpose of the global matrix when transforming normals.
-    geom_mat_no = scene_data.settings.global_matrix_inv_trans if do_bake_space_transform else None
+    geom_mat_no = Matrix(scene_data.settings.global_matrix_inv_transposed) if do_bake_space_transform else None
+    if geom_mat_no is not None:
+        # Remove translation & scaling!
+        geom_mat_no.translation = Vector()
+        geom_mat_no.normalize()
 
     geom = elem_data_single_int64(root, b"Geometry", get_fbxuid_from_key(me_key))
     geom.add_string(fbx_name_class(me.name.encode(), b"Geometry"))
@@ -2121,7 +2125,7 @@ FBXSettingsMedia = namedtuple("FBXSettingsMedia", (
 ))
 FBXSettings = namedtuple("FBXSettings", (
     "to_axes", "global_matrix", "global_scale",
-    "bake_space_transform", "global_matrix_inv", "global_matrix_inv_trans",
+    "bake_space_transform", "global_matrix_inv", "global_matrix_inv_transposed",
     "context_objects", "object_types", "use_mesh_modifiers",
     "mesh_smooth_type", "use_mesh_edges", "use_tspace", "use_armature_deform_only",
     "use_anim", "use_anim_optimize", "anim_optimize_precision", "use_anim_action_all", "use_default_take",
@@ -2159,7 +2163,8 @@ def save_single(operator, scene, filepath="",
 
     global_scale = global_matrix.median_scale
     global_matrix_inv = global_matrix.inverted()
-    global_matrix_inv_trans = global_matrix_inv.transposed().to_3x3().to_4x4()  # For transforming mesh normals.
+    # For transforming mesh normals.
+    global_matrix_inv_transposed = global_matrix_inv.transposed()
 
     # Only embed textures in COPY mode!
     if embed_textures and path_mode != 'COPY':
@@ -2177,7 +2182,7 @@ def save_single(operator, scene, filepath="",
 
     settings = FBXSettings(
         (axis_up, axis_forward), global_matrix, global_scale,
-        bake_space_transform, global_matrix_inv, global_matrix_inv_trans,
+        bake_space_transform, global_matrix_inv, global_matrix_inv_transposed,
         context_objects, object_types, use_mesh_modifiers,
         mesh_smooth_type, use_mesh_edges, use_tspace, use_armature_deform_only,
         use_anim, use_anim_optimize, anim_optimize_precision, use_anim_action_all, use_default_take,