diff --git a/girepository/gtypelib.c b/girepository/gtypelib.c
index 3b7107e..983c695 100644
--- a/girepository/gtypelib.c
+++ b/girepository/gtypelib.c
@@ -821,53 +821,6 @@ validate_function_blob (ValidateContext *ctx,
 	  return FALSE;
 	}
     }
-  else if (is_method)
-    {
-      guint32 this_offset;
-      guint32 this_type_offset;
-      ArgBlob *this;
-      SimpleTypeBlob *thistype;
-      InterfaceTypeBlob *thistype_iface;
-
-      if (sigblob->n_arguments == 0)
-	{
-	  g_set_error (error,
-		       G_TYPELIB_ERROR,
-		       G_TYPELIB_ERROR_INVALID,
-		       "Invalid 0-argument method");
-	}
-      
-      this_offset = blob->signature + sizeof (SignatureBlob);
-      this = (ArgBlob*) &typelib->data[this_offset];
-      this_type_offset = this_offset + G_STRUCT_OFFSET (ArgBlob, arg_type);
-      thistype = (SimpleTypeBlob *)&typelib->data[this_type_offset];
-      
-      if (thistype->reserved == 0 && 
-	  thistype->reserved2 == 0)
-	{
-	  g_set_error (error,
-		       G_TYPELIB_ERROR,
-		       G_TYPELIB_ERROR_INVALID_BLOB,
-		       "Non-reference type tag %d found for \"this\" argument",
-		       thistype->tag);
-	  return FALSE;
-	}
-      
-      thistype_iface = (InterfaceTypeBlob*)&typelib->data[thistype->offset];
-
-      switch (thistype_iface->tag) 
-	{
-	case GI_TYPE_TAG_INTERFACE:
-	  break;
-	default:
-	  g_set_error (error,
-		       G_TYPELIB_ERROR,
-		       G_TYPELIB_ERROR_INVALID_BLOB,
-		       "Invalid type tag %d found for \"this\" argument",
-		       thistype_iface->tag);
-	  return FALSE;
-	}
-    }
 
   pop_context (ctx);
 
diff --git a/giscanner/glibtransformer.py b/giscanner/glibtransformer.py
index b74e45b..daa9033 100644
--- a/giscanner/glibtransformer.py
+++ b/giscanner/glibtransformer.py
@@ -383,6 +383,8 @@ class GLibTransformer(object):
         # Strip namespace and object prefix: gtk_window_new -> new
         func.name = func.symbol[len(prefix)+1:]
         if is_method:
+            # We don't need the "this" parameter
+            del func.parameters[0]
             klass.methods.append(func)
         else:
             klass.constructors.append(func)
diff --git a/tests/scanner/drawable-expected.gir b/tests/scanner/drawable-expected.gir
index f96ab65..37ff723 100644
--- a/tests/scanner/drawable-expected.gir
+++ b/tests/scanner/drawable-expected.gir
@@ -17,9 +17,6 @@
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
-          <parameter name="drawable">
-            <type name="TestDrawable" c:type="TestDrawable*"/>
-          </parameter>
           <parameter name="x">
             <type name="int" c:type="int"/>
           </parameter>
diff --git a/tests/scanner/foo-expected.gir b/tests/scanner/foo-expected.gir
index 14d3911..af4c414 100644
--- a/tests/scanner/foo-expected.gir
+++ b/tests/scanner/foo-expected.gir
@@ -55,20 +55,12 @@
         <return-value>
           <type name="utility.Object" c:type="UtilityObject*"/>
         </return-value>
-        <parameters>
-          <parameter name="object">
-            <type name="Object" c:type="FooObject*"/>
-          </parameter>
-        </parameters>
       </method>
       <method name="various" c:identifier="foo_object_various">
         <return-value>
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
-          <parameter name="object">
-            <type name="Object" c:type="FooObject*"/>
-          </parameter>
           <parameter name="data">
             <type name="any" c:type="void*"/>
           </parameter>
@@ -82,9 +74,6 @@
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
-          <parameter name="object">
-            <type name="Object" c:type="FooObject*"/>
-          </parameter>
           <parameter name="blah">
             <type name="List" c:type="FooList*"/>
           </parameter>
@@ -95,9 +84,6 @@
           <type name="ObjectCookie" c:type="FooObjectCookie"/>
         </return-value>
         <parameters>
-          <parameter name="object">
-            <type name="Object" c:type="FooObject*"/>
-          </parameter>
           <parameter name="target">
             <type name="string" c:type="char*"/>
           </parameter>
@@ -240,11 +226,6 @@
         <return-value>
           <type name="none" c:type="void"/>
         </return-value>
-        <parameters>
-          <parameter name="boxed">
-            <type name="Boxed" c:type="FooBoxed*"/>
-          </parameter>
-        </parameters>
       </method>
     </record>
     <function name="boxed_new" c:identifier="foo_boxed_new">
@@ -260,11 +241,6 @@
         <return-value>
           <type name="none" c:type="void"/>
         </return-value>
-        <parameters>
-          <parameter name="dbusdata">
-            <type name="DBusData" c:type="FooDBusData*"/>
-          </parameter>
-        </parameters>
       </method>
     </record>
     <callback name="Callback" c:type="FooCallback">
