diff --git a/Entity.cpp b/Entity.cpp
index 3f4dd658c87a3d21bdee9fd08c4f10319ff5538e..da56f29f31710101905a420665343759123282a8 100644
--- a/Entity.cpp
+++ b/Entity.cpp
@@ -65,7 +65,7 @@ int Entity::takeDamage()
 void Entity::blit(DynamicPixelBuffer &buf)
 {
 	if(hittime > 0.0f) {
-		HitShader hs{ getSprite(), hittime, HIT_TIME };
+		HitShader hs{ getSprite(), (hittime / HIT_TIME), (hitpoints == 0) };
 		buf.blit_topleft(topleft, hs);
 	} else if(hitpoints > 0) {
 		buf.blit_topleft(topleft, getSprite());
diff --git a/PixelShaders.cpp b/PixelShaders.cpp
index 7ffd41357233dbfe7a11f7fa1c739455b13d9737..25528244afee9020ed52f208d6494df61df43080 100644
--- a/PixelShaders.cpp
+++ b/PixelShaders.cpp
@@ -22,5 +22,5 @@ Color HitShader::peekUnchecked(PixelPoint const &pos) const
 	if(src == _t) {
 		return _t;
 	}
-	return (dist(rng.rng) > 0.95f) ? _3 : src;
+	return (dist(rng.rng) > 0.95f) ? _3 : (is_final ? _t : src);
 }
diff --git a/PixelShaders.hpp b/PixelShaders.hpp
index 33429e635c96ea9e6535fd3a128028c2a50bcba3..cb83bc9760b7d625d01cf14124eb9291f3fdfd60 100644
--- a/PixelShaders.hpp
+++ b/PixelShaders.hpp
@@ -6,9 +6,10 @@
 class HitShader : public ShadedPixelBuffer {
 public:
 	float percent;
+	bool is_final;
 
-	HitShader(PixelBuffer const &input, float time_cur, float time_total)
-		: ShadedPixelBuffer(input), percent(time_cur / time_total) {
+	HitShader(PixelBuffer const &input, float percent, bool is_final)
+		: ShadedPixelBuffer(input), percent(percent), is_final(is_final) {
 	}
 
 	virtual Color peekUnchecked(PixelPoint const &pos) const;