diff --git a/internal/pkg/platform/platform_matcher.go b/internal/pkg/platform/platform_matcher.go
index <HASH>..<HASH> 100644
--- a/internal/pkg/platform/platform_matcher.go
+++ b/internal/pkg/platform/platform_matcher.go
@@ -128,16 +128,16 @@ func WantedPlatforms(ctx *types.SystemContext) ([]imgspecv1.Platform, error) {
 	if ctx != nil && ctx.ArchitectureChoice != "" {
 		wantedArch = ctx.ArchitectureChoice
 	}
-	wantedOS := runtime.GOOS
-	if ctx != nil && ctx.OSChoice != "" {
-		wantedOS = ctx.OSChoice
-	}
-
 	wantedVariant := getCPUVariant(runtime.GOOS, runtime.GOARCH)
 	if ctx != nil && ctx.VariantChoice != "" {
 		wantedVariant = ctx.VariantChoice
 	}
 
+	wantedOS := runtime.GOOS
+	if ctx != nil && ctx.OSChoice != "" {
+		wantedOS = ctx.OSChoice
+	}
+
 	var wantedPlatforms []imgspecv1.Platform
 	if wantedVariant != "" && compatibility[wantedArch] != nil {
 		wantedPlatforms = make([]imgspecv1.Platform, 0, len(compatibility[wantedArch]))
Move architecture+variant logic together, separate from wantedOS

The architecture+variant choices interact, and are orthogonal from OS.

Should not change behavior.