diff --git a/src/cmsvirt.c b/src/cmsvirt.c
index 28ee0ae..6b5ae08 100644
--- a/src/cmsvirt.c
+++ b/src/cmsvirt.c
@@ -180,8 +180,16 @@ cmsHPROFILE CMSEXPORT cmsCreateRGBProfileTHR(cmsContext ContextID,
     if (TransferFunction) {
 
         if (!cmsWriteTag(hICC, cmsSigRedTRCTag,   (void*) TransferFunction[0])) goto Error;
-        if (!cmsWriteTag(hICC, cmsSigGreenTRCTag, (void*) TransferFunction[1])) goto Error;
-        if (!cmsWriteTag(hICC, cmsSigBlueTRCTag,  (void*) TransferFunction[2])) goto Error;
+        if (TransferFunction[1] == TransferFunction[0]) {
+            if (!cmsLinkTag (hICC, cmsSigGreenTRCTag, cmsSigRedTRCTag)) goto Error;
+        } else {
+            if (!cmsWriteTag(hICC, cmsSigGreenTRCTag, TransferFunction[1])) goto Error;
+        }
+        if (TransferFunction[2] == TransferFunction[0]) {
+            if (!cmsLinkTag (hICC, cmsSigBlueTRCTag, cmsSigRedTRCTag)) goto Error;
+        } else {
+            if (!cmsWriteTag(hICC, cmsSigBlueTRCTag, TransferFunction[2])) goto Error;
+        }
     }
 
     if (Primaries) {
