diff --git a/io_scene_vrml2/__init__.py b/io_scene_vrml2/__init__.py
index 977df531106a616df538c3a6347f180e7e9bd3cc..470bc8b0c08d42d5251d35a8d288728a1197cf35 100644
--- a/io_scene_vrml2/__init__.py
+++ b/io_scene_vrml2/__init__.py
@@ -40,7 +40,7 @@ if "bpy" in locals():
 import os
 import bpy
 from bpy.props import CollectionProperty, StringProperty, BoolProperty, EnumProperty
-from bpy_extras.io_utils import ExportHelper, path_reference_mode
+from bpy_extras.io_utils import ExportHelper, path_reference_mode, axis_conversion
 
 class ExportVRML(bpy.types.Operator, ExportHelper):
     """Export mesh objects as a VRML2, """ \
@@ -80,6 +80,29 @@ class ExportVRML(bpy.types.Operator, ExportHelper):
             default=True,
             )
 
+    axis_forward = EnumProperty(
+            name="Forward",
+            items=(('X', "X Forward", ""),
+                   ('Y', "Y Forward", ""),
+                   ('Z', "Z Forward", ""),
+                   ('-X', "-X Forward", ""),
+                   ('-Y', "-Y Forward", ""),
+                   ('-Z', "-Z Forward", ""),
+               ),
+        default='Z',
+        )
+    axis_up = EnumProperty(
+            name="Up",
+            items=(('X', "X Up", ""),
+                   ('Y', "Y Up", ""),
+                   ('Z', "Z Up", ""),
+                   ('-X', "-X Up", ""),
+                   ('-Y', "-Y Up", ""),
+                   ('-Z', "-Z Up", ""),
+                   ),
+            default='Y',
+            )
+
     path_mode = path_reference_mode
 
     @classmethod
@@ -91,7 +114,17 @@ class ExportVRML(bpy.types.Operator, ExportHelper):
         filepath = self.filepath
         filepath = bpy.path.ensure_ext(filepath, self.filename_ext)
         from . import export_vrml2
-        keywords = self.as_keywords(ignore=("check_existing", "filter_glob"))
+
+        keywords = self.as_keywords(ignore=("axis_forward",
+                                            "axis_up",
+                                            "check_existing",
+                                            "filter_glob",
+                                            ))
+        global_matrix = axis_conversion(to_forward=self.axis_forward,
+                                        to_up=self.axis_up,
+                                        ).to_4x4()
+        keywords["global_matrix"] = global_matrix
+
         return export_vrml2.save(self, context, **keywords)
 
     def draw(self, context):
@@ -106,6 +139,8 @@ class ExportVRML(bpy.types.Operator, ExportHelper):
         row = layout.row()
         row.active = self.use_color
         row.prop(self, "color_type")
+        layout.prop(self, "axis_forward")
+        layout.prop(self, "axis_up")
         layout.prop(self, "path_mode")
 
 
diff --git a/io_scene_vrml2/export_vrml2.py b/io_scene_vrml2/export_vrml2.py
index a3370a3a3a26086aada207f78a9416be1d1f17a6..50230bc2e88253ce6e201e5212e0e41d23bff436 100644
--- a/io_scene_vrml2/export_vrml2.py
+++ b/io_scene_vrml2/export_vrml2.py
@@ -165,7 +165,8 @@ def detect_default_image(obj, bm):
     return None
 
 
-def save_object(fw, scene, obj,
+def save_object(fw, global_matrix,
+                scene, obj,
                 use_mesh_modifiers,
                 use_color, color_type,
                 use_uv,
@@ -193,7 +194,7 @@ def save_object(fw, scene, obj,
             bm = bmesh.new()
             bm.from_mesh(me)
 
-    bm.transform(obj.matrix_world)
+    bm.transform(global_matrix * obj.matrix_world)
     bmesh.ops.triangulate(bm, faces=bm.faces, use_beauty=True)
 
     # default empty
@@ -232,6 +233,7 @@ def save_object(fw, scene, obj,
 def save(operator,
          context,
          filepath="",
+         global_matrix=None,
          use_selection=False,
          use_mesh_modifiers=True,
          use_color=True,
@@ -257,7 +259,8 @@ def save(operator,
     for obj in objects:
         if obj.type == 'MESH':
             fw("\n# %r\n" % obj.name)
-            save_object(fw, scene, obj,
+            save_object(fw, global_matrix,
+                        scene, obj,
                         use_mesh_modifiers,
                         use_color, color_type,
                         use_uv,
diff --git a/io_scene_x3d/__init__.py b/io_scene_x3d/__init__.py
index 6bf640171d0fb0e6c52a261245362d058ccf6cd6..f87bd428eb3db165da9a8a320d37db42238df4b6 100644
--- a/io_scene_x3d/__init__.py
+++ b/io_scene_x3d/__init__.py
@@ -157,7 +157,6 @@ class ExportX3D(bpy.types.Operator, ExportHelper):
                ),
         default='Z',
         )
-
     axis_up = EnumProperty(
             name="Up",
             items=(('X', "X Up", ""),