diff --git a/lib/gir_ffi/boolean.rb b/lib/gir_ffi/boolean.rb
index <HASH>..<HASH> 100644
--- a/lib/gir_ffi/boolean.rb
+++ b/lib/gir_ffi/boolean.rb
@@ -16,7 +16,7 @@ module GirFFI
     end
 
     def self.to_native(value, _context)
-      TO_NATIVE.fetch(value)
+      TO_NATIVE.fetch(value ? true : false)
     end
 
     def self.size
diff --git a/test/gir_ffi/boolean_test.rb b/test/gir_ffi/boolean_test.rb
index <HASH>..<HASH> 100644
--- a/test/gir_ffi/boolean_test.rb
+++ b/test/gir_ffi/boolean_test.rb
@@ -25,6 +25,14 @@ describe GirFFI::Boolean do
     it 'converts true to 1' do
       GirFFI::Boolean.to_native(true, 'whatever').must_equal 1
     end
+
+    it 'converts nil to 0' do
+      GirFFI::Boolean.to_native(nil, 'whatever').must_equal 0
+    end
+
+    it 'converts truthy value to 1' do
+      GirFFI::Boolean.to_native('i am truth!', 'whatever').must_equal 1
+    end
   end
 
   describe '.size' do
Allow setting boolean to any truthy or falsey value