diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index e0480d1..295660b 100644
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -4730,7 +4730,7 @@
         translateArguments(*node->getAsAggregate(), arguments, lvalueCoherentFlags);
     else
         translateArguments(*node->getAsUnaryNode(), arguments);
-    spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision());
+    spv::Decoration precision = TranslatePrecisionDecoration(node->getType());
 
     spv::Builder::TextureParameters params = { };
     params.sampler = arguments[0];
diff --git a/Test/baseResults/spv.precisionTexture.frag.out b/Test/baseResults/spv.precisionTexture.frag.out
new file mode 100755
index 0000000..d5e21b6
--- /dev/null
+++ b/Test/baseResults/spv.precisionTexture.frag.out
@@ -0,0 +1,120 @@
+spv.precisionTexture.frag
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 66
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 16 57 65
+                              ExecutionMode 4 OriginUpperLeft
+                              Source ESSL 310
+                              Name 4  "main"
+                              Name 9  "v"
+                              Name 13  "texM"
+                              Name 16  "vertex"
+                              Name 21  "texH"
+                              Name 52  "imageM"
+                              Name 57  "coord"
+                              Name 60  "imageH"
+                              Name 65  "fragColor"
+                              Decorate 9(v) RelaxedPrecision
+                              Decorate 13(texM) RelaxedPrecision
+                              Decorate 13(texM) DescriptorSet 0
+                              Decorate 13(texM) Binding 0
+                              Decorate 14 RelaxedPrecision
+                              Decorate 16(vertex) Location 0
+                              Decorate 20 RelaxedPrecision
+                              Decorate 21(texH) DescriptorSet 0
+                              Decorate 21(texH) Binding 1
+                              Decorate 26 RelaxedPrecision
+                              Decorate 34 RelaxedPrecision
+                              Decorate 41 RelaxedPrecision
+                              Decorate 45 RelaxedPrecision
+                              Decorate 52(imageM) RelaxedPrecision
+                              Decorate 52(imageM) DescriptorSet 0
+                              Decorate 52(imageM) Binding 0
+                              Decorate 52(imageM) NonWritable
+                              Decorate 53 RelaxedPrecision
+                              Decorate 57(coord) Flat
+                              Decorate 57(coord) Location 1
+                              Decorate 59 RelaxedPrecision
+                              Decorate 60(imageH) DescriptorSet 0
+                              Decorate 60(imageH) Binding 1
+                              Decorate 60(imageH) NonWritable
+                              Decorate 65(fragColor) RelaxedPrecision
+                              Decorate 65(fragColor) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Function 7(fvec4)
+              10:             TypeImage 6(float) 2D sampled format:Unknown
+              11:             TypeSampledImage 10
+              12:             TypePointer UniformConstant 11
+        13(texM):     12(ptr) Variable UniformConstant
+              15:             TypePointer Input 7(fvec4)
+      16(vertex):     15(ptr) Variable Input
+              17:             TypeVector 6(float) 2
+        21(texH):     12(ptr) Variable UniformConstant
+              29:             TypeInt 32 0
+              30:     29(int) Constant 2
+              31:             TypePointer Input 6(float)
+              42:             TypeVector 6(float) 3
+              50:             TypeImage 6(float) 2D nonsampled format:Rgba32f
+              51:             TypePointer UniformConstant 50
+      52(imageM):     51(ptr) Variable UniformConstant
+              54:             TypeInt 32 1
+              55:             TypeVector 54(int) 2
+              56:             TypePointer Input 55(ivec2)
+       57(coord):     56(ptr) Variable Input
+      60(imageH):     51(ptr) Variable UniformConstant
+              64:             TypePointer Output 7(fvec4)
+   65(fragColor):     64(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+            9(v):      8(ptr) Variable Function
+              14:          11 Load 13(texM)
+              18:    7(fvec4) Load 16(vertex)
+              19:   17(fvec2) VectorShuffle 18 18 0 1
+              20:    7(fvec4) ImageSampleImplicitLod 14 19
+                              Store 9(v) 20
+              22:          11 Load 21(texH)
+              23:    7(fvec4) Load 16(vertex)
+              24:   17(fvec2) VectorShuffle 23 23 0 1
+              25:    7(fvec4) ImageSampleImplicitLod 22 24
+                              Store 9(v) 25
+              26:          11 Load 13(texM)
+              27:    7(fvec4) Load 16(vertex)
+              28:   17(fvec2) VectorShuffle 27 27 0 1
+              32:     31(ptr) AccessChain 16(vertex) 30
+              33:    6(float) Load 32
+              34:    7(fvec4) ImageSampleExplicitLod 26 28 Lod 33
+                              Store 9(v) 34
+              35:          11 Load 21(texH)
+              36:    7(fvec4) Load 16(vertex)
+              37:   17(fvec2) VectorShuffle 36 36 0 1
+              38:     31(ptr) AccessChain 16(vertex) 30
+              39:    6(float) Load 38
+              40:    7(fvec4) ImageSampleExplicitLod 35 37 Lod 39
+                              Store 9(v) 40
+              41:          11 Load 13(texM)
+              43:    7(fvec4) Load 16(vertex)
+              44:   42(fvec3) VectorShuffle 43 43 0 1 2
+              45:    7(fvec4) ImageSampleProjImplicitLod 41 44
+                              Store 9(v) 45
+              46:          11 Load 21(texH)
+              47:    7(fvec4) Load 16(vertex)
+              48:   42(fvec3) VectorShuffle 47 47 0 1 2
+              49:    7(fvec4) ImageSampleProjImplicitLod 46 48
+                              Store 9(v) 49
+              53:          50 Load 52(imageM)
+              58:   55(ivec2) Load 57(coord)
+              59:    7(fvec4) ImageRead 53 58
+                              Store 9(v) 59
+              61:          50 Load 60(imageH)
+              62:   55(ivec2) Load 57(coord)
+              63:    7(fvec4) ImageRead 61 62
+                              Store 9(v) 63
+                              Return
+                              FunctionEnd
diff --git a/Test/spv.precisionTexture.frag b/Test/spv.precisionTexture.frag
new file mode 100644
index 0000000..7868889
--- /dev/null
+++ b/Test/spv.precisionTexture.frag
@@ -0,0 +1,24 @@
+#version 310 es
+precision mediump float;
+precision mediump int;
+layout(binding = 0) uniform mediump sampler2D texM;
+layout(binding = 1) uniform highp sampler2D texH;
+layout(binding = 0, rgba32f) uniform readonly mediump image2D imageM;
+layout(binding = 1, rgba32f) uniform readonly highp image2D imageH;
+
+layout(location = 0) in highp vec4 vertex;
+layout(location = 1) flat in highp ivec2 coord;
+layout(location = 0) out vec4 fragColor;
+
+void main()
+{
+    vec4 v;
+    v = texture(texM, vertex.xy);
+    v = texture(texH, vertex.xy);
+    v = textureLod(texM, vertex.xy, vertex.z);
+    v = textureLod(texH, vertex.xy, vertex.z);
+    v = textureProj(texM, vertex.xyz);
+    v = textureProj(texH, vertex.xyz);
+    v = imageLoad(imageM, coord);
+    v = imageLoad(imageH, coord);
+}
\ No newline at end of file
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index 6980065..acdb0a4 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -1295,7 +1295,7 @@
     TIntermTyped *result = intermediate.addBuiltInFunctionCall(loc, function.getBuiltInOp(),
                                                                function.getParamCount() == 1,
                                                                arguments, function.getType());
-    if (obeyPrecisionQualifiers())
+    if (result != nullptr && obeyPrecisionQualifiers())
         computeBuiltinPrecisions(*result, function);
 
     if (result == nullptr) {
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index 80a75aa..9634262 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -377,6 +377,7 @@
         "spv.precision.frag",
         "spv.precisionArgs.frag",
         "spv.precisionNonESSamp.frag",
+        "spv.precisionTexture.frag",
         "spv.prepost.frag",
         "spv.privateVariableTypes.frag",
         "spv.qualifiers.vert",
