diff --git a/mapgen.lua b/mapgen.lua
index 47ae44d5283ce75ca15b739e8ebfeb0ec8e8fd36..85766c3c23648288221c6618a739f3828f498382 100644
--- a/mapgen.lua
+++ b/mapgen.lua
@@ -191,7 +191,18 @@ local add_schem = function(a, b, c, d, e, f, g)
 end
 
 -- redwood tree
-add_schem({"ethereal:mesa_dirt"}, 0.0025, {"mesa"}, 1, 100, path .. "redwood.mts", ethereal.mesa)
+minetest.register_decoration({
+    deco_type = "schematic",
+    place_on = {"ethereal:mesa_dirt"},
+    sidelen = 80,
+    fill_ratio = 0.0025,
+    biomes = mesa,
+    rotation = "random",
+    y_min = 1,
+    y_max = 100,
+    schematic = path .. "redwood_tree.mts",
+    flags = "place_center_y",
+})
 
 -- banana tree
 add_schem({"ethereal:grove_dirt"}, 0.015, {"grove"}, 1, 100, ethereal.bananatree, ethereal.grove)
diff --git a/sapling.lua b/sapling.lua
index 57247acadd142c0472d7f0c88a6e657952840c1b..8172f35e46d880de709181630ce1336999fabdab 100644
--- a/sapling.lua
+++ b/sapling.lua
@@ -107,11 +107,7 @@ function ethereal.grow_willow_tree(pos)
 end
 
 function ethereal.grow_redwood_tree(pos)
-	if math.random(1, 2) == 1 then
-		ethereal.add_tree(pos, 9, 3, 9, path .. "redwood.mts") -- shinji
-	else
-		ethereal.add_tree(pos, 8, 6, 8, path .. "redwood_tree.mts") -- iska
-	end
+		ethereal.add_tree(pos, 8, 34, 8, path .. "redwood_tree.mts") -- iska
 end
 
 function ethereal.grow_orange_tree(pos)
@@ -189,7 +185,7 @@ ethereal.grow_sapling = function (pos, node)
 		ethereal.grow_willow_tree(pos)
 
 	elseif node.name == "ethereal:redwood_sapling"
-	and under == "bakedclay:red" then
+	and under == "ethereal:mesa_dirt" then
 		ethereal.grow_redwood_tree(pos)
 
 	elseif node.name == "ethereal:orange_tree_sapling"
diff --git a/schematics/redwood_tree.mts b/schematics/redwood_tree.mts
index 50c367a893d3820377dcc44af627aa220268d125..f4a509e4205c3634b6c1d289132469b008a43892 100644
Binary files a/schematics/redwood_tree.mts and b/schematics/redwood_tree.mts differ