diff --git a/src/taglist.c b/src/taglist.c
index 9bc6021b091ecab70de33ff1c31b0225571ea254..e933b71fde690a854bdbd6917ccaaaa7477a3d9b 100644
--- a/src/taglist.c
+++ b/src/taglist.c
@@ -14,6 +14,7 @@
 #include "taglist.h"
 #include "z_zone.h"
 #include "r_data.h"
+#include "r_defs.h"
 
 // Bit array of whether a tag exists for sectors/lines/things.
 bitarray_t tags_available[BIT_ARRAY_SIZE (MAXTAGS)];
@@ -454,6 +455,13 @@ void Tag_SectorFSet (const size_t id, const mtag_t tag)
 	Taggroup_Remove(tags_sectors, curtag, id);
 	Taggroup_Add(tags_sectors, tag, id);
 	Tag_FSet(&sec->tags, tag);
+
+	// Sectors with linedef trigger effects need to have their trigger tag updated too
+	// This is a bit of a hack...
+	if (sec->flags & MSF_TRIGGERLINE_PLANE || sec->flags & MSF_TRIGGERLINE_MOBJ)
+	{
+		sec->triggertag = tag;
+	}
 }
 
 mtag_t Tag_NextUnused(mtag_t start)