RS.RenderStepped:Connect(function()
	if mouse.Target then
		if toggle == true and mouse.Target == workspace.Table or mouse.Target.Parent.Name == "Sandwich" or mouse.Target.Parent.Name == plr.Name .. "_Foods" then
			local pos1 = math.floor(mouse.Hit.X / GridSize + 0.5) * GridSize
			local pos2 = mouse.Hit.Y
			local pos3 = math.floor(mouse.Hit.Z / GridSize + 0.5) * GridSize
			part.CFrame = CFrame.new(Vector3.new(pos1,pos2,pos3))*CFrame.Angles(0,math.rad(ori),math.rad(tilt)) + mouse.Target.CFrame.RightVector * part.Size.Z / 2
		end
	end
end)

When I place cylinder, I want it to look up and place it on top surface of part but since its orientation gets changed, UpVector doesn't works quiet well and most likely cylinder is just flying (Because of sizes), how would I fix it? I tried RightVector, but it doesn't works better also, it moves part not on top, but middle of cylinder being on top surface (its half inside) and it isn't in center of mouse position.