diff --git a/index.js b/index.js
index <HASH>..<HASH> 100644
--- a/index.js
+++ b/index.js
@@ -1,9 +1,12 @@
 module.exports = function preventDefault(handler){
     return function(){
-        var last = arguments[arguments.length - 1];
-        if(last && last.preventDefault){
-            last.preventDefault();
+        for(var x = 0; x < arguments.length; x++){
+            var e = arguments[x];
+            if(e && e.preventDefault){
+                e.preventDefault();
+                break;
+            }
         }
         return handler.apply(this, arguments);
-    }
+    };
 };
diff --git a/test/index.js b/test/index.js
index <HASH>..<HASH> 100644
--- a/test/index.js
+++ b/test/index.js
@@ -9,13 +9,13 @@ describe('preventDefault', function() {
         var f = pd(function(){});
         expect(typeof f).to.equal('function');
     });
-    it('calls preventDefault on the last argument', function(){
+    it('calls preventDefault on the first argument that supports preventDefault', function(){
         var spy = chai.spy(function(){});
         var e = {
             preventDefault: spy,
         };
-        var f = pd(function(){});
-        f(1, 2, e);
+        var f = pd((function(){}).bind(null, 1, 2, 3));
+        f(e); // This is what the browser does
         expect(spy).to.have.been.called();
     });
 });
It turns out that React sends additional parameters after the event!