diff --git a/io_anim_acclaim/__init__.py b/io_anim_acclaim/__init__.py
index 38df1f9dd55cc3e68b2b5c443cabf54f567a25a1..be8ce5b6bdc5936cb26eb29118873f63a3275abf 100644
--- a/io_anim_acclaim/__init__.py
+++ b/io_anim_acclaim/__init__.py
@@ -390,9 +390,9 @@ class AmcAnimator(bpy.types.Operator):
         return {'PASS_THROUGH'}
 
     def execute(self, context):
-        context.window_manager.modal_handler_add(self)
         self.timer = context.window_manager.\
             event_timer_add(0.001, context.window)
+        context.window_manager.modal_handler_add(self)
         return {'RUNNING_MODAL'}
 
     def cancel(self, context):
diff --git a/io_anim_c3d/__init__.py b/io_anim_c3d/__init__.py
index ffd3658c15b48f20b51c88273b3fea79467ad551..8741c2527b82ead3b53b0f0356534158d007d850 100644
--- a/io_anim_c3d/__init__.py
+++ b/io_anim_c3d/__init__.py
@@ -87,9 +87,9 @@ class C3DAnimateCloud(bpy.types.Operator):
         return {'PASS_THROUGH'}
 
     def execute(self, context):
-        context.window_manager.modal_handler_add(self)
         self.timer = context.window_manager.\
             event_timer_add(0.001, context.window)
+        context.window_manager.modal_handler_add(self)
         return {'RUNNING_MODAL'}
 
     def cancel(self, context):
diff --git a/modules/selection_utils.py b/modules/selection_utils.py
index aff9eea8f953f9b504c8eff774de6a15e55392ce..3bf8981645554f2daa3e43b83dedf08dbbe5278f 100644
--- a/modules/selection_utils.py
+++ b/modules/selection_utils.py
@@ -72,8 +72,9 @@ class SelectionOrder(bpy.types.Operator):
         return {'PASS_THROUGH'}
 
     def invoke(self, context, event):
-        context.window_manager.modal_handler_add(self)
         self.update(context)
+
+        context.window_manager.modal_handler_add(self)
         return {'RUNNING_MODAL'}
 
 
diff --git a/space_view3d_panel_measure.py b/space_view3d_panel_measure.py
index 85cea04cf468aaf6283281cbb4712c44d6f0b882..2d8613010d07be7c575b8cc8be5e094397b0af03 100644
--- a/space_view3d_panel_measure.py
+++ b/space_view3d_panel_measure.py
@@ -922,7 +922,6 @@ class VIEW3D_OT_display_measurements(bpy.types.Operator):
                 # Add the region OpenGL drawing callback
                 for WINregion in context.area.regions:
                     if WINregion.type == 'WINDOW':
-                        context.window_manager.modal_handler_add(self)
                         self._handle = WINregion.callback_add(
                             draw_measurements_callback,
                             (self, context),
@@ -930,6 +929,7 @@ class VIEW3D_OT_display_measurements(bpy.types.Operator):
 
                         print("Measure panel display callback added")
 
+                        context.window_manager.modal_handler_add(self)
                         return {'RUNNING_MODAL'}
 
             return {'CANCELLED'}
diff --git a/space_view3d_screencast_keys.py b/space_view3d_screencast_keys.py
index 1530681cfeef791a0345a3adefe4c66e6a70f858..01077baba68ed04e8f05f8916d2f1f47ab2971e0 100644
--- a/space_view3d_screencast_keys.py
+++ b/space_view3d_screencast_keys.py
@@ -592,7 +592,6 @@ class ScreencastKeysStatus(bpy.types.Operator):
             if context.window_manager.screencast_keys_keys is False:
                 # operator is called for the first time, start everything
                 context.window_manager.screencast_keys_keys = True
-                context.window_manager.modal_handler_add(self)
                 self.key = []
                 self.time = []
                 self.mouse = []
@@ -605,6 +604,7 @@ class ScreencastKeysStatus(bpy.types.Operator):
                 self._timer = context.window_manager.event_timer_add(0.025,
                     context.window)
                 ScreencastKeysStatus.overall_time.insert(0, time.time())
+                context.window_manager.modal_handler_add(self)
                 return {'RUNNING_MODAL'}
             else:
                 # operator is called again, stop displaying
diff --git a/system_demo_mode/demo_mode.py b/system_demo_mode/demo_mode.py
index 29e8bf324cc34380577ee69408c80b2c0388252a..54b8ed24bf8d5ad41f17c0d20fe9c41bff79d664 100644
--- a/system_demo_mode/demo_mode.py
+++ b/system_demo_mode/demo_mode.py
@@ -396,8 +396,8 @@ class DemoMode(bpy.types.Operator):
             return {'CANCELLED'}
         else:
             DemoMode.enabled = True
-            context.window_manager.modal_handler_add(self)
 
+            context.window_manager.modal_handler_add(self)
             return {'RUNNING_MODAL'}
 
     def cancel(self, context):