Use QDBusVariant::variant() instead of QVariant::fromValue()
The former produces a QVariant of the type that QDBusVariant held, while the latter produces a QVariant of type QDBusVariant itself. This affects our return type according to DBus.
Simple test:
auto x = QVariant::fromValue(readFdoColorScheme());
auto y = readFdoColorScheme().variant();
qDebug() << x.typeName() << y.typeName();