diff --git a/lib/wp/core.c b/lib/wp/core.c
index a892afcbb3104bfdc7b532be9adf15fc116c973b..193c4447689366fe68e0ccb607137b796cbb8267 100644
--- a/lib/wp/core.c
+++ b/lib/wp/core.c
@@ -339,7 +339,7 @@ wp_core_class_init (WpCoreClass * klass)
 /**
  * wp_core_new:
  * @context: (transfer none) (nullable): the #GMainContext to use for events
- * @properties: (transfer none) (nullable): additional properties, which are
+ * @properties: (transfer full) (nullable): additional properties, which are
  *   passed to `pw_context_new` and `pw_context_connect`
  *
  * Returns: (transfer full): a new #WpCore
@@ -347,6 +347,7 @@ wp_core_class_init (WpCoreClass * klass)
 WpCore *
 wp_core_new (GMainContext *context, WpProperties * properties)
 {
+  g_autoptr (WpProperties) props = properties;
   return g_object_new (WP_TYPE_CORE,
       "context", context,
       "properties", properties,
diff --git a/tests/common/base-test-fixture.h b/tests/common/base-test-fixture.h
index 21786ad11f9d657ebfbb89c64eb79556629665d6..a0aa4fcbdd8717932765fd2bbeaf37187e10db69 100644
--- a/tests/common/base-test-fixture.h
+++ b/tests/common/base-test-fixture.h
@@ -77,7 +77,7 @@ wp_base_test_fixture_setup (WpBaseTestFixture * self, WpBaseTestFlags flags)
 
   /* init our core */
   props = wp_properties_new (PW_KEY_REMOTE_NAME, self->server.name, NULL);
-  self->core = wp_core_new (self->context, props);
+  self->core = wp_core_new (self->context, wp_properties_ref (props));
   g_signal_connect (self->core, "disconnected",
       (GCallback) disconnected_callback, self);
 
@@ -86,7 +86,7 @@ wp_base_test_fixture_setup (WpBaseTestFixture * self, WpBaseTestFlags flags)
 
   /* init the second client's core */
   if (flags & WP_BASE_TEST_FLAG_CLIENT_CORE) {
-    self->client_core = wp_core_new (self->context, props);
+    self->client_core = wp_core_new (self->context, wp_properties_ref (props));
     g_signal_connect (self->client_core, "disconnected",
         (GCallback) disconnected_callback, self);