diff --git a/samplecode/Sample3D.cpp b/samplecode/Sample3D.cpp
index 2aeb685..9d591a8 100644
--- a/samplecode/Sample3D.cpp
+++ b/samplecode/Sample3D.cpp
@@ -383,16 +383,16 @@
 
             half4 main(float2 p) {
                 float3 norm = convert_normal_sample(sample(normal_map, p));
-                float3 plane_norm = normalize(localToWorldAdjInv * float4(norm, 0)).xyz;
+                float3 plane_norm = normalize(localToWorldAdjInv * norm.xyz0).xyz;
 
-                float3 plane_pos = (localToWorld * float4(p, 0, 1)).xyz;
+                float3 plane_pos = (localToWorld * p.xy01).xyz;
                 float3 light_dir = normalize(lightPos - plane_pos);
 
                 float ambient = 0.2;
                 float dp = dot(plane_norm, light_dir);
                 float scale = min(ambient + max(dp, 0), 1);
 
-                return sample(color_map, p) * half4(float4(scale, scale, scale, 1));
+                return sample(color_map, p) * scale.xxx1;
             }
         )";
         auto [effect, error] = SkRuntimeEffect::Make(SkString(code));
@@ -468,16 +468,16 @@
 
             half4 main(float2 p) {
                 float3 norm = normalize(vtx_normal);
-                float3 plane_norm = normalize(localToWorldAdjInv * float4(norm, 0)).xyz;
+                float3 plane_norm = normalize(localToWorldAdjInv * norm.xyz0).xyz;
 
-                float3 plane_pos = (localToWorld * float4(p, 0, 1)).xyz;
+                float3 plane_pos = (localToWorld * p.xy01).xyz;
                 float3 light_dir = normalize(lightPos - plane_pos);
 
                 float ambient = 0.2;
                 float dp = dot(plane_norm, light_dir);
                 float scale = min(ambient + max(dp, 0), 1);
 
-                return half4(0.7, 0.9, 0.3, 1) * half4(float4(scale, scale, scale, 1));
+                return half4(0.7, 0.9, 0.3, 1) * scale.xxx1;
             }
         )";
         auto [effect, error] = SkRuntimeEffect::Make(SkString(code));
