diff --git a/gobject/tests/private.c b/gobject/tests/private.c
index b2d3b46..d143b93 100644
--- a/gobject/tests/private.c
+++ b/gobject/tests/private.c
@@ -159,6 +159,85 @@ test_mixed_get_dummy_5 (TestMixed *self)
   return TEST_MIXED_PRIV (self)->dummy_5;
 }
 
+typedef struct {
+  GObject parent_instance;
+} TestMixedBase;
+
+typedef struct {
+  float dummy_1;
+} TestMixedBasePrivate;
+
+typedef struct {
+  GObjectClass parent_class;
+} TestMixedBaseClass;
+
+GType test_mixed_base_get_type (void);
+
+G_DEFINE_TYPE (TestMixedBase, test_mixed_base, test_object_get_type ())
+
+#define TEST_MIXED_BASE_PRIV(obj)    ((TestMixedBasePrivate *) test_mixed_base_get_private ((TestMixedBase *) (obj)))
+
+static void
+test_mixed_base_class_init (TestMixedBaseClass *klass)
+{
+  test_mixed_base_private_offset = g_type_class_add_instance_private (klass, sizeof (TestMixedBasePrivate));
+}
+
+static void
+test_mixed_base_init (TestMixedBase *self)
+{
+  if (g_test_verbose ())
+    g_print (G_STRLOC ": MixedBase private offset: %d\n", test_mixed_base_private_offset);
+
+  TEST_MIXED_BASE_PRIV (self)->dummy_1 = 900.f;
+}
+
+static float
+test_mixed_base_get_dummy_1 (TestMixedBase *self)
+{
+  return TEST_MIXED_BASE_PRIV (self)->dummy_1;
+}
+
+typedef struct {
+  TestMixedBase parent_instance;
+} TestMixed2;
+
+typedef struct {
+  float dummy_2;
+} TestMixed2Private;
+
+typedef struct {
+  TestMixedBaseClass parent_class;
+} TestMixed2Class;
+
+GType test_mixed2_get_type (void);
+
+G_DEFINE_TYPE_WITH_CODE (TestMixed2, test_mixed2, G_TYPE_OBJECT,
+			G_ADD_PRIVATE (TestMixed2, test_mixed2))
+
+#define TEST_MIXED2_PRIV(obj)    ((TestMixed2Private *) test_mixed2_get_private ((TestMixed2 *) (obj)))
+
+static void
+test_mixed2_class_init (TestMixed2Class *klass)
+{
+  test_mixed2_private_offset = g_type_class_add_instance_private (klass, sizeof (TestMixed2Private));
+}
+
+static void
+test_mixed2_init (TestMixed2 *self)
+{
+  if (g_test_verbose ())
+    g_print (G_STRLOC ": Mixed2 private offset: %d\n", test_mixed2_private_offset);
+
+  TEST_MIXED2_PRIV (self)->dummy_2 = 9000.f;
+}
+
+static float
+test_mixed2_get_dummy_2 (TestMixed2 *self)
+{
+  return TEST_MIXED2_PRIV (self)->dummy_2;
+}
+
 static void
 private_instance (void)
 {
@@ -185,10 +264,16 @@ static void
 private_derived_mixed (void)
 {
   TestMixed *obj = g_object_new (test_mixed_get_type (), NULL);
+  TestMixed2 *obj2;
 
   g_assert_cmpint (test_object_get_dummy_0 ((TestObject *) obj), ==, 42);
   g_assert_cmpfloat (test_mixed_get_dummy_5 (obj), ==, 100.f);
 
+  obj2 = g_object_new (test_mixed2_get_type (), NULL);
+
+  g_assert_cmpfloat (test_mixed_base_get_dummy_1 ((TestMixedBase*) obj2), ==, 900);
+  g_assert_cmpfloat (test_mixed2_get_dummy_2 (obj2), ==, 9000.f);
+
   g_object_unref (obj);
 }
 
