anchor.diff:  
   /datum/component/clothing_fov_visor/UnregisterFromParent()
   	UnregisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED, COMSIG_CLOTHING_VISOR_TOGGLE))
  +	if(wearer)
  +		wearer.remove_fov_trait(src, fov_angle)
  +		UnregisterSignal(wearer, COMSIG_PARENT_QDELETING)
  +		wearer = null
   	return ..()
   
   /// On dropping the item, remove the FoV trait if visor was down.
   /datum/component/clothing_fov_visor/proc/on_drop(datum/source, mob/living/dropper)
   	SIGNAL_HANDLER
   	is_worn = FALSE
  +	if(wearer) // Prevent any edge cases where on_drop is called with a different dropper to the one who equipped the visor.
  +		UnregisterSignal(wearer, COMSIG_PARENT_QDELETING)
  +		wearer.remove_fov_trait(src, fov_angle)
  +		wearer = null
   	if(visor_up)
   		return
  -	dropper.remove_fov_trait(source.type, fov_angle)
  +	dropper.remove_fov_trait(src, fov_angle)
   	dropper.update_fov()
   
   /// On equipping the item, add the FoV trait if visor isn't up.
  
positive.code: 	if(!is_worn)
  		return
  	var/obj/item/clothing/clothing_parent = parent
  	var/mob/living/wearer = clothing_parent.loc //This has to be the case due to equip/dropped keeping track.
  	if(visor_up)
  		wearer.remove_fov_trait(source.type, fov_angle)
  		wearer.update_fov()
  	else
  		wearer.add_fov_trait(source.type, fov_angle)
  		wearer.update_fov()
  
negative.code: 	var/visor_up = FALSE
  	/// Because of clothing code not being too good, we need keep track whether we are worn.
  	var/is_worn = FALSE
  	/// The current wearer
  	var/mob/living/wearer
  
  /datum/component/clothing_fov_visor/Initialize(fov_angle)
  	. = ..()
  