diff --git a/mods/ITEMS/mcl_ocean/kelp.lua b/mods/ITEMS/mcl_ocean/kelp.lua
index a0a2d76d2..0049499a5 100644
--- a/mods/ITEMS/mcl_ocean/kelp.lua
+++ b/mods/ITEMS/mcl_ocean/kelp.lua
@@ -384,8 +384,16 @@ function kelp.remove_kelp_below_structure(minp, maxp)
 		local kelp_node = core.get_node(kelp_pos)
 
 		-- Convert kelp back to normal node
-		kelp_node.name = core.registered_nodes[kelp_node.name].node_dig_prediction
-		core.swap_node(kelp_pos, kelp_node)
+		local dig_pos,_,new_height = kelp.find_unsubmerged(kelp_pos, kelp_node)
+		if dig_pos then
+			new_height = new_height - 1
+			if new_height <= 0 then
+				kelp_node.name = core.registered_nodes[kelp_node.name].node_dig_prediction
+			else
+				kelp_node.param2 = 16 * new_height
+			end
+			core.swap_node(kelp_pos, kelp_node)
+		end
 	end
 end
 
diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua
index 0d890a37b..4c3a3787c 100644
--- a/mods/MAPGEN/mcl_biomes/init.lua
+++ b/mods/MAPGEN/mcl_biomes/init.lua
@@ -3460,8 +3460,8 @@ local corals = {
 
 local function clear_kelp(t, minp, maxp, blockseed)
 	for _,pos in pairs(t) do
-		local pos_minp = vector.offset(pos, -4, -4, -4)
-		local pos_maxp = vector.offset(pos,  4,  2,  4)
+		local pos_minp = vector.offset(pos, -8, -4, -8)
+		local pos_maxp = vector.offset(pos,  8,  2,  8)
 		mcl_ocean.kelp.remove_kelp_below_structure(pos_minp, pos_maxp)
 	end
 end
diff --git a/mods/MAPGEN/mcl_structures/shipwrecks.lua b/mods/MAPGEN/mcl_structures/shipwrecks.lua
index 67a432818..e90dce275 100644
--- a/mods/MAPGEN/mcl_structures/shipwrecks.lua
+++ b/mods/MAPGEN/mcl_structures/shipwrecks.lua
@@ -173,8 +173,8 @@ mcl_structures.register_structure("shipwreck",{
 		}
 	},
 	after_place = function(pos)
-		local minp = vector.offset(pos, -10, -4, 10)
-		local maxp = vector.offset(pos,  10,  2, 10)
+		local minp = vector.offset(pos, -20, -8, 20)
+		local maxp = vector.offset(pos,  20,  2, 20)
 		mcl_ocean.kelp.remove_kelp_below_structure(minp, maxp)
 	end,
 })
@@ -211,8 +211,8 @@ mcl_structures.register_structure("ocean_temple",{
 		mcl_structures.spawn_mobs("mobs_mc:guardian_elder",spawnon,p1,p2,pr,1,true)
 		mcl_structures.construct_nodes(p1,p2,{"group:wall"})
 
-		local minp = vector.offset(p, -10, -4, 10)
-		local maxp = vector.offset(p,  10,  2, 10)
+		local minp = vector.offset(p, -20, -4, 20)
+		local maxp = vector.offset(p,  20,  4, 20)
 		mcl_ocean.kelp.remove_kelp_below_structure(minp, maxp)
 	end,
 	loot = {